Posted on 2008-05-22 00:09
Herbert 阅读(573)
评论(0) 编辑 收藏 引用 所属分类:
设计模式
Singleton(单件) 模式:
保证一个类只有一个实例,并且提供一个访问它的全局访问点。
假设有一个太阳类 Sun:
这样,当有另外一个类的对象调用Sun 类的 GetInstance() 方法时,它只会返回唯一一个Sun对象。当有些类要被频繁地调用时,如果每次调用都要进行实例化,那开销是十分大的,这时候我们就可以考虑一下用这个模式。然而这个模式只适用于但线程,如果用于多线程,两个或以上的对象同时调用这个实例的时候,就会涉及到线程互斥的问题了。
把Singleton模式修改一下,使它适合用于多线程,这就是Double Checked Locking 模式所要解决的问题。
只需要在 GetInstance()方法里面改一下,加一段线程互斥处理的代码,其它不变。