# 设计模式说明与PPT **Repository Path**: tang-hl1221/DesignPattern ## Basic Information - **Project Name**: 设计模式说明与PPT - **Description**: 包含了二十四种设计模式的说明文档,涉及思路以及授课需要用的ppt - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-30 - **Last Updated**: 2026-01-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 设计模式 - 工厂模式示例项目 本项目是一个使用 C# 语言实现工厂模式的设计模式示例集合。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,在不暴露具体创建逻辑的情况下统一管理对象的创建。 ## 项目特点 - **完整实现**:包含简单工厂、工厂方法和抽象工厂三种工厂模式的完整实现 - **面向接口编程**:所有产品都基于接口设计,降低代码耦合度 - **易于理解**:清晰的类结构和注释,便于学习理解 ## 工厂模式类型 ### 1. 简单工厂模式 (SimpleFactory) 通过静态方法根据类型参数创建不同产品: - **产品接口**:`ICar` - **产品类型**: - `SportCar` - 跑车 - `JeepCar` - 吉普车 - `HatchbackCar` - 掀背车 - **创建方式**:`SimpleFactory.GetCar(CarType)` ### 2. 工厂方法模式 (FactoryMethod) 将创建对象的任务延迟到子类实现: - **工厂接口**:`IFactory` - **具体工厂**: - `SportFactory` - 创建跑车 - `JeepFactory` - 创建吉普车 - `HatchbackFactory` - 创建掀背车 - **特点**:遵循开闭原则,新增产品无需修改现有工厂 ### 3. 抽象工厂模式 (AbstractFactory) 创建一系列相关或依赖的产品家族: - **产品族**: - 产品A系列:`ProductA1`、`ProductA2` - 产品B系列:`ProductB1`、`ProductB2` - **抽象工厂**:`AbstractFactory` - **具体工厂**: - `ConcreteFactory1` - 生产产品A1和B1 - `ConcreteFactory2` - 生产产品A2和B2 - **适用场景**:需要创建多个相关产品的场景 ## 项目结构 ``` CreationPattern/FactoryModel/FactoryModel/ ├── SimpleFactory.cs # 简单工厂实现 ├── Factory.cs # 工厂方法实现 ├── AbstractFactory.cs # 抽象工厂实现 ├── Program.cs # 程序入口 └── FactoryModel.csproj # 项目文件 ``` ## 使用说明 ### 环境要求 - .NET 6.0 或更高版本 - Visual Studio 2022 / VS Code ### 运行方式 1. 使用 Visual Studio 打开 `FactoryModel.sln` 解决方案 2. 选择启动项目并运行 3. 或者使用命令行: ```bash dotnet run ``` ### 代码示例 **简单工厂模式使用:** ```csharp ICar sportCar = SimpleFactory.GetCar(CarType.Sport); sportCar.GetCar(); ``` **工厂方法模式使用:** ```csharp IFactory factory = new SportFactory(); ICar car = factory.CreateCar(); car.GetCar(); ``` **抽象工厂模式使用:** ```csharp AbstractFactory factory1 = new ConcreteFactory1(); AbstractProuctA productA = factory1.CreateProductA(); AbstractProuctB productB = factory1.CreateProductB(); productA.Print(); productB.Print(); ``` ## 许可证 本项目采用 MIT 许可证开源,详情请查看 [LICENSE](LICENSE) 文件。