设计模式-工厂设计

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

相关推荐
CC.GG几秒前
【C++】STL容器--list的使用
开发语言·c++·list
武文斌772 分钟前
项目学习总结:CAN总线、摄像头、STM32概述
linux·arm开发·stm32·单片机·嵌入式硬件·学习·c#
洲覆3 分钟前
基于 clangd 搭建 Redis 6.2 源码阅读与调试环境
开发语言·数据库·redis·缓存
草莓熊Lotso10 分钟前
《算法闯关指南:优选算法--二分查找》--19.x的平方根,20.搜索插入位置
java·开发语言·c++·算法
旭意13 分钟前
C++蓝桥杯之函数与递归
开发语言·c++·蓝桥杯
。TAT。14 分钟前
C++ - vector
开发语言·c++·学习
杨福瑞15 分钟前
C语言数据结构:算法复杂度(1)
c语言·开发语言·数据结构
sali-tec17 分钟前
C# 基于halcon的视觉工作流-章46-不匀面划痕
人工智能·算法·计算机视觉·c#
郭源潮126 分钟前
《Muduo网络库:实现one loop per thread设计模式》
开发语言·c++·网络库
linksinke38 分钟前
html案例:制作一个图片水印生成器,防止复印件被滥用
开发语言·前端·程序人生·html