结合项目实例 回顾传统设计模式(五)单例模式

这个...... 大家应该熟的不能再熟了 虫子就不班门弄斧了

private  static  object LockKey =  new  object();
         private  static T _Instance;

         public  static T GetInstance()
        {
             return GetInstance( null);
        }

         public  static T GetInstance(Func<T> onCreateInstance)
        {
             if (_Instance ==  null)
            {
                 lock (LockKey)
                {
                     if (_Instance ==  null)
                    {
                         try
                        {
                             if (onCreateInstance ==  null)
                                _Instance =  new T();
                             else
                                _Instance = onCreateInstance();
                        }
                         catch
                        {
                            _Instance =  default(T);
                        }
                    }
                }
            }
             return _Instance;
        }


         public  static T GetInstance( object lockKey, T instance, Func<T> onCreateInstance)
        {
             if (instance ==  null)
            {
                 if (lockKey ==  null)
                    lockKey = LockKey;
                 lock (lockKey)
                {
                     if (instance ==  null)
                    {
                         try
                        {
                             if (onCreateInstance ==  null)
                                instance =  new T();
                             else
                                instance = onCreateInstance();
                        }
                         catch
                        {
                            instance =  default(T);
                        }
                    }
                }
            }
             return instance;
        }

直接总结:单例模式确保一个类只有一个实例,并提供一个全局访问点

 

你可能感兴趣的:(设计模式,职场,休闲)