设计模式-工厂设计

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

cs 复制代码
// 抽象产品类
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 类型的实例。这样,客户端代码只需要调用工厂方法,而不需要自己直接实例化产品类。这提供了一种灵活性,可以在不修改客户端代码的情况下引入新的产品类型。

相关推荐
foundbug9994 分钟前
C#实现的自动升级系统
服务器·网络·c#
王柏龙4 分钟前
c# aggregate使用
开发语言·c#
小鸡吃米…5 分钟前
Python - 构造函数
开发语言·python
moonquakeTT5 分钟前
C++:智能指针
开发语言·c++
hoiii1876 分钟前
基于MATLAB实现无监督数据建模
开发语言·matlab
码界奇点19 分钟前
基于Go语言的AI接口管理与分发系统设计与实现
开发语言·人工智能·ai·golang·毕业设计·go语言·源代码管理
bybitq20 分钟前
深入浅出 Go 流程控制:从循环到延迟执行
开发语言·后端·golang
Autumn729922 分钟前
【python】 日志打印、垃圾回收
开发语言·python
Lvan的前端笔记29 分钟前
python:列表推导式(List Comprehension)
开发语言·python·list
李小先29 分钟前
supersonic——PARSING阶段
开发语言·python