设计模式之单例
2017-04-07 本文已影响4人
smallstrong
单例UML.png单例模式
- 一般私有化构造函数
- 通过一个静态方法来获取唯一单例对象
两个例子
静态内部类单例模式
public class Singleton{
private Singleton(){
//私有构造方法
}
public static Singleton getSingleton(){
//当方法被调用之后,其实SingletonHolder的构造方法没有被调用(亲测)
return SingletonHoler.singleton;
}
//静态内部类
priveta static class SingletonHolder{
//唯一单例
private static final Singleton singleton = new Singleton();
}
}
枚举模式
public enum Singleton{
INSTANCE;//恩,这就是单例
}
懒汉模式
public class Singleton{
private static Singleton singleton;
private Singleton(){
//私有构造方法
}
public static synchronized Singleton getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
饿汉模式
public class Singleton{
private static final Singleton singleton = new Singleton();
private Singleton(){
//私有构造方法
}
public static Singleton getInstance(){
return singleton;
}
}