Singleton模式
1.想确定任何情况下都绝对只有一个实例。
2.想在程序中表现出“只存在一个实例”。
package Singleton;
//饿汉式
public class Singleton {
private static Singleton sn = new Singleton();
private Singleton() {}
public static Singleton getSn() {
return sn;
}
}
package Singleton;
//懒汉式
public class Singleton02 {
//创建进程,不初始化
private static Singleton02 sn;
private Singleton02() {
}
public static synchronized Singleton02 getSn() {
if(sn == null) {
sn = new Singleton02();
}
return sn;
}
}
package Singleton;
//静态内部类单例模式
public class StaticSingleton {
//一个静态内部类
private static class StaticSingletonHolder {
private static StaticSingleton ss= new StaticSingleton();
}
//私有的构造方法
private StaticSingleton () {}
public static final StaticSingleton getSs() {
return StaticSingletonHolder.ss;
}
}
package Singleton;
//枚举单例模式
public enum EnumSingleton {
ss;
public void whateverMethed() {}
}