设计模式学习总结-创建型模式
五大创建型设计模式的注意事项:
1.单例(Singleton)
构造函数private或protected,防止外部实例化;
双层锁定实例化,防止多线程的多个实例化;
类要sealed,防止被继承后派生添加实例;
饿汉、懒汉两种类型,各有千秋;
2.原型(Prototype)
Clone 浅拷贝,复制值类型,不复制引用类型;
Copy 深拷贝,值类型与引用类型都做复制;
在.NET中实现ICloneable接口,用this.MemberwiseClone()实现浅拷贝;
3.建造者(Builder)
各细节流程不同,但装配方式一致时,可以使用建造者模式以规范流程;
4.工厂方法(FactoryMethod)
工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
工厂方法使用添加新功能时,只要修改客户端代码。
5.抽象工厂(AbstractFactory)
用于创建一系列相关或相关依赖对象的接口,无需指定它们具体的类,如:支持多种数据库的数据库访问层;
与简单工厂及反射配合,可以使抽象工厂的程序更加简洁完美;
另外提供我在学习创建型设计模式时写的相关程序代码下载:/Files/flashlm/DesignPatternsDemo.zip
1.单例(Singleton)
构造函数private或protected,防止外部实例化;
双层锁定实例化,防止多线程的多个实例化;
类要sealed,防止被继承后派生添加实例;
饿汉、懒汉两种类型,各有千秋;
2.原型(Prototype)
Clone 浅拷贝,复制值类型,不复制引用类型;
Copy 深拷贝,值类型与引用类型都做复制;
在.NET中实现ICloneable接口,用this.MemberwiseClone()实现浅拷贝;
3.建造者(Builder)
各细节流程不同,但装配方式一致时,可以使用建造者模式以规范流程;
4.工厂方法(FactoryMethod)
工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
工厂方法使用添加新功能时,只要修改客户端代码。
5.抽象工厂(AbstractFactory)
用于创建一系列相关或相关依赖对象的接口,无需指定它们具体的类,如:支持多种数据库的数据库访问层;
与简单工厂及反射配合,可以使抽象工厂的程序更加简洁完美;
另外提供我在学习创建型设计模式时写的相关程序代码下载:/Files/flashlm/DesignPatternsDemo.zip
创建型模式细节及注意事项,请参考TerryLee的“创建型模式篇”: