# 设计模式 **Repository Path**: baihaowen/design-patterns ## Basic Information - **Project Name**: 设计模式 - **Description**: 设计模式 常用模式 总结 c# - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-06-20 - **Last Updated**: 2025-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: Csharp ## README 1. 简单工厂模式 (Simple Factory) **使用时机**:当你有一个单一的类负责创建不同类型的对象,且这些对象具有相似的接口或父类。 **例子**:开发一个图形编辑器,可以创建不同类型的形状(如圆形、矩形、三角形),使用简单工厂模式来创建这些形状对象。 2. 工厂方法模式 (Factory Method) **使用时机**:当对象的创建逻辑需要放在不同的子类中,以便引入新的产品时不修改现有代码。 **例子**:一个跨平台的应用程序,需要为不同操作系统(如Windows、Mac、Linux)创建相应的UI组件,可以使用工厂方法模式。 3. 抽象工厂模式 (Abstract Factory) **使用时机**:当你需要创建一组相关或依赖的对象,且不希望指定具体类时。 **例子**:一个GUI工具包需要创建与特定操作系统风格一致的按钮、文本框和其他控件,可以使用抽象工厂模式。 4. 单例模式 (Singleton) **使用时机**:当一个类只需要一个实例,并且提供一个全局的访问点时。 **例子**:一个配置管理类,应用程序中所有组件需要共享这个配置,可以使用单例模式。 5. 原型模式 (Prototype) **使用时机**:当一个对象的创建成本较高,而你希望通过复制已有的实例来创建新实例时。 **例子**:需要创建大量类似对象时,可以通过克隆原型对象来提高性能,如在游戏开发中创建大量敌人或NPC。 6. 策略模式 (Strategy) **使用时机**:当一个类有多种行为,而你希望在运行时能够动态选择其中一种行为时。 **例子**:电商网站的不同支付方式(如信用卡、PayPal、银行转账),可以使用策略模式来封装这些支付算法。 7. 外观模式 (Facade) **使用时机**:当你需要为复杂的子系统提供一个简单的接口时。 **例子**:一个图形库提供了复杂的图形绘制功能,可以用外观模式提供一个简单的接口供客户端使用。 8. 装饰模式 (Decorator) **使用时机**:当你希望在不改变对象接口的前提下,动态地给对象添加职责时。 **例子**:开发一个文本编辑器,可以使用装饰模式来为文本添加不同的格式(如加粗、斜体、下划线)。 9. 观察者模式 (Observer) **使用时机**:当一个对象的状态变化需要通知其他多个对象,并且这些对象之间存在依赖关系时。 **例子**:一个新闻发布系统,用户可以订阅新闻,一旦有新消息发布,所有订阅的用户会收到通知。 10. 适配器模式 (Adapter) **使用时机**:当你希望将一个类的接口转换成客户端期望的另一个接口时。 **例子**:旧系统与新系统的集成,旧系统的接口与新系统的不兼容,可以使用适配器模式来适配。 11. 状态模式 (State) **使用时机**:当一个对象的行为随着它的状态改变而改变时。 **例子**:一个网络连接对象,有多种状态(如连接中、已连接、断开连接),可以使用状态模式来管理这些状态及其行为。