單例模式的目的:保證一個類僅有一個實例,並提供一個訪問實例的全局訪問點。
要點:一、單例類擁有一個私有構造函數,確保用戶沒法經過new 關鍵字去直接實例化它。
二、單例模式包含一個靜態私有成員變量與靜態公用工廠方法。
設計代碼:
public class Singleton{
private static Singleton instance=null;
private Singleton(){
}
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
簡單工廠模式
模式分析:
1.將對象的建立和對象自己的業務處理分離,能夠下降系統的耦合度,使得二者修改起來都相對容易。
2.在調用工廠類的工廠方法是,因爲工廠方法是靜態方法,使用起來很方便,可經過類名直接調用,並且只須要傳入一個簡單的參數便可,在實際開發中,還能夠在調用時將所傳入的參數保存在XML等格式的配置文件中,修改參數是無須修改任何的java源代碼。
3.簡單工廠模式最大的問題是工廠類的職責相對太重,增長新的產品須要修改工廠類的判斷邏輯,這一點與開閉原則是相對違背的。
4.簡單工廠模式的要點在於:當你須要什麼,只須要傳入一個正確的參數,就能夠獲取你所須要的對象,而無須知道其建立的細節。
模式優缺點
優勢:
1.工廠類含有必要的判斷邏輯,能夠決定在何時建立哪個產品類的實例,客戶端能夠免除直接建立產品對象的責任,而僅僅「消費」產品;簡單工廠模式經過這種作法實現了對責任的分割,它提供了專門的工廠類用於建立對象。
2.客戶端無須知道所建立的具體產品類的類名,只須要知道具體產品類所對應的參數便可。減小使用者的記憶量。
3.經過引入配置文件,能夠在不修改任何客戶端代碼的狀況下更換和增長新的具體產品類,在必定程度上提升了系統的靈活性。
缺點:
1.因爲工廠類幾種了全部產品建立邏輯,一旦不能正常工做,整個系統都要受到影響。
2.使用簡單工廠模式將會增長系統中類的個數,在必定程度上增長了系統的複雜度和理解難度。
3.系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,在產品類型較多時,有可能形成工廠邏輯過於複雜,不利於系統的擴展和維護。
4.簡單工廠模式因爲使用了靜態工廠方法,形成工廠角色沒法造成基於繼承的等級結構。
工廠方法模式:也叫虛擬構造器模式或者多態工廠模式。
在工廠方法模式中,工廠父類負責定義建立產品對象的公共接口,而工廠子類則負責生成具體的產品對象,這樣作的目的是將產品類的實例化操做延遲到工廠子類中完成,即經過工廠子類來肯定究竟應該實例化哪個具體產品類。