設計模式是在大量的實踐總結和理論化之後優選的代碼結果,編程風格,以及解決問題的思考方式.設計模式就像是經典的棋譜,不同的棋局我們用不同的棋譜.
單態設計模式:採取一定的方法保證在整個軟體系統中,對某個類只能產生一個對象執行個體,並且該類只提供一個取得其對象的執行個體方法.
在java中實現單態模式只需要執行以下三步:
1.將類的構造方法的存取權限聲明為private.這樣就不能用new操作符在類的外部產生類的對象了,但在類內部仍可以產生該類的對象.
2.在類內部產生一個靜態執行個體.
3.提供一個靜態方法用於外部取得該類的執行個體.
因為在類的外部無法得到類的對象,所以只能調用該類的某個靜態方法以返回類內部建立的對象,又因為靜態方法只能訪問類中的靜態成員變數,所以,指向類內部產生該類對象的變數也必須定義成靜態.
class Chinese...{
static Chinese objRef = new Chinese();
/**//*在類的內部建立自己的對象,必須建立成static的(這樣保證儲存空間中只分配了一份堆記憶體),否則會形成一個不斷建立對象的死迴圈,直到消耗完所有記憶體.*/
private Chinese()...{}
public static Chinese getInstance()...{
return objRef;
}
}
/** *//*******************Chinese類的改進****************/
class Chinese_opt...{
static Chinese_opt objRef = null;
private Chinese_opt()...{}
public static Chinese_opt getInstance()...{
if(objRef == null)
objRef = new Chinese_opt();
return objRef;
}
/**//*這個方法比上面有所改進,不用每次都進行產生對象,只是第一次使用時產生對象,提高了效率*/
}
class TestChinese...{
public static void main(String[] args)...{
Chinese chinese1 = Chinese.getInstance();
Chinese chinese2 = Chinese.getInstance();
System.out.println(chinese1 == chinese2);
}
}