`

单例模式

 
阅读更多
//饿汗模式
class Singleton1{
	private static Singleton1 instance = new Singleton1();
	private Singleton1(){}
	public static Singleton1 getInstance(){
		return instance;
	}
}
//懒汉模式
class Singleton2{
	private static Singleton2 instance = null;
	private Singleton2(){}
	public static synchronized Singleton2 getInstance(){
		if(instance == null){
			instance = new Singleton2();
		}
		return instance;
	}
}
//双重检查加锁模式
class Singleton3{
	private static volatile Singleton3 instance = null;
	private Singleton3(){}
	public static Singleton3 getInstance(){
		if(instance == null){
			synchronized(Singleton3.class){
				if(instance == null)
					return instance;
			}
		}
	}
}
//通过内部类创建实例
class Singleton4{
	private Singleton4(){}
	private static Inner{
		public static instance = new Singleton4();
	}
	public static Singleton4 getInstance(){
		return inner.instance;
	}
}
//枚举创建实例模式此模式根据枚举自身特点:自己完成实例化并由jvm提供同步处理
enum Singleton5{
	instance;
	Singleton5(){
	}
	public void operator(){
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics