单例模式
饿汉
public class SingleTon1 { private String name = "饿汉式"; private SingleTon1(){ System.out.println(name); } private static SingleTon1 singleton = new SingleTon1(); public static SingleTon1 getInstance(){ return singleton; } }
懒汉
public class SingleTon2 { private String name = "懒汉式"; private SingleTon2(){ System.out.println(name); } static { single = new SingleTon2(); } private static SingleTon2 single; public static SingleTon2 getInstance(){ if( null == single){ single = new SingleTon2(); } return single; } }
静态内部
public class SingleTon3 { private String name = "静态内部类"; private SingleTon3(){ System.out.println(name); } private static class MySingleTon3{ private static final SingleTon3 sing = new SingleTon3(); } public static SingleTon3 getInstance(){ return MySingleTon3.sing; } }
双重检验
public class SingleTon4 { private String name = "双重检验"; private SingleTon4() { System.out.println(name); } private static SingleTon4 sing4; public static SingleTon4 getInstance() { if (null == sing4) { synchronized (SingleTon4.class) { if (null == sing4) { sing4 = new SingleTon4(); } } } return sing4; } }
浙公网安备 33010602011771号