我理解的單例模式就是乙個類只能產生乙個物件的時候就要用到單例模式,與之對應的是工程模式是專門用來產生物件的。
//懶漢式單例類.在第一次呼叫的時候例項化自己
public class singleton
private static singleton single=null;
//靜態工廠方法
public static singleton getinstance()
return single;
} }
下面我們通過乙個工廠方法進行區分:
public class factory
} 抽象工廠
工廠模式中有: 工廠方法(factory method) 抽象工廠(abstract factory).
這兩個模式區別在於需要建立物件的複雜程度上。如果我們建立物件的方法變得複雜了,如上面工廠方法中是建立乙個物件sample,如果我們還有新的產品介面sample2.
這裡假設:sample有兩個concrete類samplea和samleb,而sample2也有兩個concrete類sample2a和sampleb2
那麼,我們就將上例中factory變成抽象類,將共同部分封裝在抽象類中,不同部分使用子類實現,下面就是將上例中的factory拓展成抽象工廠:
public abstract class factory
//抽象工廠方法
public class ******factory extends factory
public sample2 creator(string name)
} public class bombfactory extends factory
public sample2 creator(string name)
}從上面看到兩個工廠各自生產出一套sample和sample2,也許你會疑問,為什麼我不可以使用兩個工廠方法來分別生產sample和sample2?
抽象工廠還有另外乙個關鍵要點,是因為 ******factory內,生產sample和生產sample2的方法之間有一定聯絡,所以才要將這兩個方法**在乙個類中,這個工廠類有其本身特徵,也許製造過程是統一的,比如:製造工藝比較簡單,所以名稱叫******factory。
在實際應用中,工廠方法用得比較多一些,而且是和動態類裝入器組合在一起應用
單例模式和工廠模式
實現思路 將構造方法私有化 宣告本類型別的靜態私有屬性 提供共有靜態方法獲取 本類物件 class static x new public static get class static x null public static get 優點 缺點 產品介面 public inte ce produ...
什麼是單例模式
1.單例模式只能有乙個例項。2.單例類必須建立自己的唯一例項。3.單例類必須向其他物件提供這一例項。第一步 將類的建構函式生命為私有的建構函式,這樣我們在外部就無法通過singleton s new singleton 來例項化該,因為private生命的成員只有在該類的內部可以訪問。這樣可以保證類...
什麼是單例模式
1.保證類在記憶體中只能有乙個物件 1.懶漢式 類一載入就建立物件 2.餓漢式 用的時候,才去建立物件 相關經驗 餓漢式 是不會出現問題的單例模式 懶漢式 可能會出現問題的單例模式 1.懶載入 延遲載入 2.執行緒安全問題 1.是否多執行緒環境 是 2.是否有共享資料 是 3.是否有多條語句操作共享...