单例模式 Singleton Pattern
意图:确保一个类只有一个实例,并对该实例提供全局访问接口
应用场景:
1)在多个客户端会话中共享同一个类的某个实例;
2)在某个类只有一个实例对象,或有限个实例对象
好处或缺点:
1)需要保证多线程对单例对象的访问同步
类结构:
类实例应该放在类内部完成,保证实例的唯一性和私有性;
注意:
创建实例方法是私有的;
类结构:
Singleton
static s:Singleton
Singleton()
CreateInstance():Singleton
static getInstance():Singleton
调用方法:
1.类方法的调用--类方法
2.实例方法
getInstance()实现:
if(s == NULL){
s = CreateInstance();
}
return s;
设计问题:Configuration类是COS系统的配置类,只能有一个实例对象,并共享于所有客户端,如何设计该类?
类结构:
Configuration
-$c:Configuration
-Configuration()
-$CreateInstance():Configuration
+$getInstance():Configuration
关键代码:
public class Configuration { private static Configuration c; private Configuration() {} private static Configuration CreateInstance(){ //创建对象 } public static Configuration getInstance() { if (c == NULL) { c = CreateInstance(); } return c; } }
怕什么真理无穷,进一寸有一寸的欢喜。---胡适