一 : 最基础的单例模式
package SingleTon;
public class Singleton {
public volatile static Singleton instance;
public Singleton(){}
public static Singleton getInstance() {
if(instance != null) return instance;
synchronized (Singleton.class) {
if(null == instance) {
instance = new Singleton();
}
}
return instance;
}
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println("两个实例是否相同:" + (s1 == s2));
}
}
二 : 用静态内部类实现一个单例模式
package SingleTon;
//基本单例模式
public class Singleton {
public volatile static Singleton instance;
private Singleton(){}
public static Singleton getInstance() {
return instance;
}
//写一个静态内部类,里面实例化外部类
private static class SingletonInner {
private static final Singleton instance = new Singleton();
}
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println("两个实例是否相同:" + (s1 == s2));
}
}
三 : 用枚举实现一个单例模式
package SingleTon;
//枚举实现单例模式
public enum SingletonEnum {
instance;
public SingletonEnum getInstance() {
return instance;
}
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println("两个实例是否相同:" + (s1 == s2));
}
}
枚举实现单例模式真简单啊 !
本文到此结束 !