/**
* 單例創建的方式
* 1、懶漢式
* 1)構造器私有化
* 2)聲明私有的靜態屬性
* 3)對外提供訪問屬性的靜態方法,確保該對象存在
*
* @author Administrator
*
*/
public class MyJvm2 {
private static MyJvm2 instance;
private MyJvm2(){
}
public static MyJvm2 getInstance(){
if (null==instance) {//提高效率
synchronized (MyJvm2.class) {
if (null==instance) {//安全
instance=new MyJvm2();
}
}
}
return instance;
}
}
/**
* 餓漢式
* 1)構造器私有化
* 2)聲明私有的靜態屬性,同事創建該對象
* 3)對外提供訪問屬性的靜態方法
*/
class MyJvm1 {
private static MyJvm1 instance=new MyJvm1();
private MyJvm1(){
}
public static MyJvm1 getInstance(){
return instance;
}
}
/**
* 類在使用的時候加載,延緩了加載時間
* @author Administrator
*
*/
class MyJvm3 {
private static class JVMholder{
private static MyJvm3 instance=new MyJvm3();
}
private MyJvm3(){
}
public static MyJvm3 getInstance(){
return JVMholder.instance;
}
}
[設計模式]——單例模式_doubleChecking
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.