创建型模式
抽象工厂/工厂方法模式:解决 new 实例对象的统一接口管理
单例模式:解决全局唯一实例对象创建
//在多线程中, 注意以下两句的运用:
private static volatile Singleton instance = null;
private static object lockObject = new object();
private Singleton() { }
public static class Singleton<T> where T : class,new() { private static T _Instance; private static object _lockObj = new object(); /// <summary> /// 获取单例对象的实例 /// </summary> public static T GetInstance() { if (_Instance != null) return _Instance; lock (_lockObj) { if (_Instance == null) { var temp = Activator.CreateInstance<T>(); System.Threading.Interlocked.Exchange(ref _Instance, temp); } } return _Instance; } }
生成器模式:解决以具有生产规范性和多组件组合的对象创建
原型模式:解决一种要保护内部信息,但又要提供自身克隆的对象创建
如: 一个已经存在的实例, 它具有可复制的能力, 即使之前所复制的对象已经有变化,
也不会影响现在新复制的对象,保持新复制对象信息如初始状态.
工厂与生成模式的主要区别:
它们一致的地方都是最终产品的提供者, 不同的是: 以"工厂"做为提供者的, 其到手产品已经是最终产品, 它只要根据需求参数提供产品就行.
而以"生成"做为提供者的, 其到手的产品不是成品, 需要自己来构造最终产品, 再根据需求参数提供产品.
一个是大工厂,一个是小作坊