设计模式-工厂设计

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

相关推荐
Ray Liang4 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Scout-leaf3 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530143 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
mudtools4 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的5 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清21885 天前
.NET 本地Db数据库-技术方案选型
windows·c#
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
lindexi5 天前
dotnet DirectX 通过可等待交换链降低输入渲染延迟
c#·directx·d2d·direct2d·vortice
feifeigo1235 天前
matlab画图工具
开发语言·matlab
dustcell.5 天前
haproxy七层代理
java·开发语言·前端