策略模式之單例模式
阿新 • • 發佈:2018-11-14
將類的構造器私有化,然後提供一個返回值,供其他類例項化物件,這樣例項化的物件就只能有一個物件。一個類,一個 JVM 中,就只有一個例項存在。
大體思路:
- 將構造器私有化;
- 將提供的呼叫的靜態值指向例項;
- 返回靜態屬性
程式碼:通過將 Earth 類的構造器私有化,其他類就不能訪問這個構造器,只能通過 Earth 類中自己提供的變數或者方法呼叫,這樣其他類在例項化 Earth 類的時候,例項化的物件就只能是一個。
public class Earth { String name; int year; private Earth() {} public static Earth earth = new Earth(); }
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Earth e1 = Earth.earth;
Earth e2 = Earth.earth;
System.out.println(e1==e2);
}
}
上面的屬於 餓漢式 單利模式,無論是否被呼叫,都會被載入,而 懶漢式 只是需要的時候才進行載入,下面是 懶漢式 的單例模式。
public class Earth { String name; int year; private Earth() {} public static Earth earth; public static Earth getEarth() { if(earth == null) { earth = new Earth(); } return earth; } }
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Earth e1 = Earth.earth;
Earth e2 = Earth.getEarth();
System.out.println(e1==e2);
}
}
上面的例子輸出 false,因為懶漢式的只是需要的時候才載入,如果將 e1 改成和 e2 一樣的話,則會輸出 true。
如果業務有比較充分的啟動時間和載入時間就使用 餓漢模式,否則的話就使用 懶漢模式.