設計模式是一套被反覆使用,通過分類編目的,代碼設計的經驗總結。使用設計模式的目的是爲了代碼重用,避免程序大量修改,同時使代碼更易於理解,而且保證代碼的可靠性。
1、單例模式
在某些狀況下,有些對象只須要一個就能夠了,即每一個類只須要一個實例,例如,一臺計算機上能夠鏈接多臺打印機,可是這個計算機是上的程序只能由一個,這裏就 能夠經過單例模式來避免兩個打印做業同時輸出到打印機中,即在整個的打印過程當中只有一個打印程序的實例。
簡單來講,單例模式(也叫單件模式)的做用就是保證在整個應用程序的生命週期中,任何一個時刻,單例類的實例都只存在一個。
2、單例模式解決的問題
解決的問題:保證一個類的對象在內存中的惟一性
3、應用場景
應用場景:讀個程序都在操做操做同一個配置文件時,須要程序A操做後的結果,程序B要知道並基於A操做後的結果進行操做。
4、單例模式的設計步驟:
-
將類中的構造函數私有化(不讓其餘程序new該類的對象)
-
在本類中new一個對象
-
定義一個方法返回該對象
5、單例模式的兩種設計
-
懶漢式 是一種延遲加載模式,在調用方法時new對象
-
餓漢式 在建立類時就new對象
6、懶漢式
package cn.dzp.flyroc.designmode;
//懶漢式
public class LazySingleDemo {
private static LazySingleDemo lazySingleDemo = null;
private LazySingleDemo(){} //定義構造方法
public static LazySingleDemo getInstance(){
if (lazySingleDemo == null){
LazySingleDemo lazySingleDemo = new LazySingleDemo(); //建立單例對象
}
return lazySingleDemo;
}
}
7、餓漢式
package cn.dzp.flyroc.designmode;
//餓漢式
public class HungrySingleDemo {
private static HungrySingleDemo hungrySingleDemo = new HungrySingleDemo(); //建立單例對象
private HungrySingleDemo(){} //建立構造函數
//定義一個方法,返回該對象,讓其餘程序獲取到該對象
public static HungrySingleDemo getInstance(){
return hungrySingleDemo;
}
}