单件模式
内容:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
结构:单件模式的结构很简单,只有一个单件类(Singleton),它只能创建出一个实例。
UML类图:
优点:
单件类具有唯一实例,可以很好的控制用户对其访问。
适用情境:
系统希望某个类只能有一个实例时。
单件类模式的实现也比较简单,其在设计上主要有以下特点:
单件类中包含了自身引用的成员变量,该变量通常是私有静态的;
单件类的构造方法是私有的;
单件类自己负责创建这个唯一的实例。
在Java中单件类的设计有两种常用方式
1、在JVM加载单件类时就创建它的唯一的实例。
public class Singleton {
private static Singleton uniqueSingleton = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return uniqueSingleton;
}
}
2、在单件类提供的方法中创建这个实例,即在需要时才创建这个唯一的实例,但为了防止多线程调用这个方法而产生多个实例,需要就该方法设置为同步方法。
public class Singleton {
private static Singleton uniqueSingleton;
private Singleton(){
}
public static synchronized Singleton getInstance(){
if(uniqueSingleton==null){
uniqueSingleton = new Singleton();
}
return uniqueSingleton;
}
}