设计模式-工厂设计

在C#中实现工厂设计模式,可以创建一个工厂类,它根据传入的参数决定创建哪个具体类的实例。以下是一个简单的示例:

// 抽象产品类
public abstract class Car
{
    public abstract void Drive();
}
 
// 具体产品类
public class BmwCar : Car
{
    public override void Drive()
    {
        Console.WriteLine("Driving BMW.");
    }
}
 
public class AudiCar : Car
{
    public override void Drive()
    {
        Console.WriteLine("Driving Audi.");
    }
}
 
// 工厂类
public static class CarFactory
{
    public static Car CreateCar(string carType)
    {
        switch (carType)
        {
            case "BMW":
                return new BmwCar();
            case "Audi":
                return new AudiCar();
            default:
                throw new ArgumentException("Invalid car type");
        }
    }
}
 
// 使用工厂创建产品实例
public class Program
{
    public static void Main(string[] args)
    {
        Car bmw = CarFactory.CreateCar("BMW");
        bmw.Drive();
 
        Car audi = CarFactory.CreateCar("Audi");
        audi.Drive();
    }
}

在这个例子中,CarFactory 是一个工厂类,它根据传入的 carType 字符串来创建相应的 Car 类型的实例。这样,客户端代码只需要调用工厂方法,而不需要自己直接实例化产品类。这提供了一种灵活性,可以在不修改客户端代码的情况下引入新的产品类型。

相关推荐

  1. 设计模式-工厂设计

    2024-07-18 07:16:03       22 阅读
  2. 设计模式--工厂设计模式

    2024-07-18 07:16:03       21 阅读
  3. 设计模式工厂模式

    2024-07-18 07:16:03       64 阅读
  4. 设计模式--工厂模式

    2024-07-18 07:16:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 07:16:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 07:16:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 07:16:03       57 阅读
  4. Python语言-面向对象

    2024-07-18 07:16:03       68 阅读

热门阅读

  1. 构建完成,通知我:在Gradle中配置构建通知

    2024-07-18 07:16:03       18 阅读
  2. Netty Websocket

    2024-07-18 07:16:03       20 阅读
  3. 【Android】传给后端的Url地址被转码问题处理

    2024-07-18 07:16:03       19 阅读
  4. Redis数据结构--跳跃表 Skip List

    2024-07-18 07:16:03       20 阅读
  5. feign 接口调用下载接口技巧

    2024-07-18 07:16:03       22 阅读