创建型模式

抽象工厂/工厂方法模式:解决 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;
        }
    }

 

 

生成器模式:解决以具有生产规范性和多组件组合的对象创建

原型模式:解决一种要保护内部信息,但又要提供自身克隆的对象创建

  如: 一个已经存在的实例, 它具有可复制的能力, 即使之前所复制的对象已经有变化,

  也不会影响现在新复制的对象,保持新复制对象信息如初始状态.

 

工厂与生成模式的主要区别:

它们一致的地方都是最终产品的提供者, 不同的是: 以"工厂"做为提供者的, 其到手产品已经是最终产品, 它只要根据需求参数提供产品就行.

而以"生成"做为提供者的, 其到手的产品不是成品, 需要自己来构造最终产品, 再根据需求参数提供产品.

一个是大工厂,一个是小作坊

posted @ 2011-10-20 11:06  Yu  阅读(158)  评论(0编辑  收藏  举报