新版设计模式手册(New Design pattern)
根据给定的信息,我们可以将《新版设计模式手册》中的知识点进行详细解读,主要涉及三大类设计模式:创建型模式、结构型模式以及行为型模式。 ### 创建型模式 #### 1. 单件模式 **意图**:确保某一个类只有一个实例存在,并提供一个全局的访问点。 **适用性**: - 当需要确保一个类只有一个实例,而且能够被多个对象共享,避免重复创建而浪费资源时; - 当唯一实例必须通过子类化来扩展,同时用户又无须更改原代码即可使用一个扩展的实例时。 **示例代码**: ```csharp public class Singleton { private static Singleton instance; protected Singleton() { } public static Singleton Instance() { if (instance == null) { instance = new Singleton(); } return instance; } } ``` **实际应用**:在多线程环境中,单件模式常用于创建线程安全的对象,例如数据库连接池或日志管理等。 #### 2. 抽象工厂模式 **意图**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 **适用性**: - 一个系统要独立于它的产品创建、组合方式时; - 一个系统要由多个产品系列中的一个来配置时; - 当要强调一系列相关的产品对象的设计以便进行联合使用时。 **示例代码**: ```csharp public interface IColor { string GetColor(); } public interface IShape { string GetShape(); } public class Red : IColor { public string GetColor() { return "Red"; } } public class Green : IColor { public string GetColor() { return "Green"; } } public class Circle : IShape { public string GetShape() { return "Circle"; } } public class Square : IShape { public string GetShape() { return "Square"; } } public interface IAbstractFactory { IColor CreateColor(); IShape CreateShape(); } public class ColorFactory : IAbstractFactory { public IColor CreateColor() { return new Red(); } public IShape CreateShape() { return null; } } public class ShapeFactory : IAbstractFactory { public IColor CreateColor() { return null; } public IShape CreateShape() { return new Circle(); } } ``` #### 3. 建造者模式 **意图**:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 **适用性**: - 当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时; - 当构造过程必须允许被构造的对象有不同的表示时。 **示例代码**: ```csharp public abstract class Builder { public abstract void BuildPartA(); public abstract void BuildPartB(); public abstract Product GetProduct(); } public class ConcreteBuilder1 : Builder { private Product _product = new Product(); public override void BuildPartA() { _product.Add("PartA1"); } public override void BuildPartB() { _product.Add("PartB1"); } public override Product GetProduct() { return _product; } } public class Product { private List<string> parts = new List<string>(); public void Add(string part) { parts.Add(part); } public string ListParts() { return String.Join(", ", parts); } } ``` #### 4. 工厂方法模式 **意图**:定义一个用于创建对象的接口,但让实现这个接口的类决定实例化哪一个类。 **适用性**: - 当一个类不知道它所必须创建的对象的类的时候; - 当一个类希望由其子类来指定它所创建的对象的时候。 **示例代码**: ```csharp public abstract class Creator { public abstract Product FactoryMethod(); public void SomeOperation() { //... Product product = this.FactoryMethod(); //... } } public class ConcreteCreator1 : Creator { public override Product FactoryMethod() { return new ConcreteProduct1(); } } public class Product { } public class ConcreteProduct1 : Product { } ``` #### 5. 原型模式 **意图**:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 **适用性**: - 当要实例化的类是在运行时刻指定时,例如,通过动态装载; - 当要避免创建一个与产品类层次平行的工厂类层次时。 **示例代码**: ```csharp public interface Prototype<T> where T : Prototype<T> { T Clone(); } public class ConcretePrototype1 : Prototype<ConcretePrototype1> { public ConcretePrototype1 Clone() { return new ConcretePrototype1(); } } ``` 以上是创建型模式的介绍及示例,下一部分将详细介绍结构型模式。
剩余150页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0