设计模式-工厂设计

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

相关推荐
柳鲲鹏1 分钟前
编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MinGW版)
开发语言·qt·mysql
三玖诶2 分钟前
如何在 Qt 的 QListWidget 中逐行添加和显示数据
开发语言·qt
追逐远方的梦12 分钟前
二级C语言2023-3易错题
c语言·开发语言
一个很帅的帅哥14 分钟前
实现浏览器的下拉加载功能(类似知乎)
开发语言·javascript·mysql·mongodb·node.js·vue·express
极客先躯23 分钟前
java和kotlin 可以同时运行吗
android·java·开发语言·kotlin·同时运行
shiming887927 分钟前
Python数据分析与可视化
开发语言·python·数据分析
__water28 分钟前
『功能项目』战士的伤害型技能【45】
c#·unity引擎·战士职业伤害型技能
kid_sup34 分钟前
C语言错题本
c语言·开发语言
白总Server1 小时前
MySQL在大数据场景应用
大数据·开发语言·数据库·后端·mysql·golang·php
c语言鹌鹑蛋1 小时前
C++进阶 --- 多继承中的虚表问题
开发语言·c++