一个特定的对象承担了其个职责,而其它的对象必需依赖这个职责.当然这里我们用了(Lazy Initialization)来保证在第一次使用时再创建实例.为什么要对SingleTon进行惰性初始化:1.我们可能没有足够的信息,所以无法在某个特定的时刻实例化一个SingleTon.例如,为了创建一个Factory SingleTon,我们可能必须等待,直到实际工厂中的机器之间都建起了通信渠道.2.如果某个SingleTon对象需要一些资源,例如,一个数据库连接,那么,我们可以使用惰性初始化.另外,如果在一个会话过程中,这个应用程序不需要使用这个SingleTon,那么我们也需要使用惰性初始化.在多线程环境中进行惰性初始化时,必须防止多线程对SingleTon进行多次初始化.
支持多线程的SingleTon 1using System; 2using System.Collections.Generic; 3using System.Text; 4 5namespace Gof.Nan.Test 6{ 7 class SingleTonInMultiThread 8 { 9 private static SingleTonInMultiThread _singleTon;10 private static object _classLock = typeof(SingleTon);11 private long _wipMoves;//私有变量,表示一定的意义.12 private SingleTonInMultiThread(){13 _wipMoves = 0;14 }15 public SingleTonInMultiThread CreateInstance()16 {17 lock (_classLock)18 {19 if (_singleTon == null)20 {21 _singleTon = new SingleTonInMultiThread();22 }23 return _singleTon;24 }25 }26 public void DoSomething()27 {28 lock (_classLock)//保证其在执行时的线程安全性29 {30 _wipMoves++;31 }32 }33 }34} The Singleton Pattern ensures a class has oly one instance, and provides a global point of access to it.转载于:https://www.cnblogs.com/nanshouyong326/archive/2006/12/31/608545.html
