簡單總結,有何不足,歡迎糾正!
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點問題:工具箱無限例項化
解決方案:通過判斷進行解決
實現:通過類的定義給私有變數,讓後定義乙個方法作為全域性訪問點,只能通過此方法是實現類的例項化(在方法裡加判斷,如果類已經例項化,那麼將無法在例項化類)
一般多執行緒(作業系統學習中有)的情況下會使用單例模型。
lock
lock是確保當乙個執行緒位於**的臨界區時,另乙個執行緒不進入臨界區。如果其他執行緒檢視進入鎖定的**,則它將一直處於等待,直到物件被釋放!白話:就是通過lock進行上鎖實現對執行緒的單一實現。鎖還有單鎖和雙鎖之分!
例子
懶漢式:雙重檢查鎖 dcl (double check lock)
public
class
person}}
return person;
}private
person()
}
餓漢式
// 常用的餓漢式,簡單易用,沒那麼多事
public
class
hungrysingletwo
}
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。問題:簡歷太多,乙份乙份寫起來太麻煩
解決方案:「複製貼上」
有原型就有非原型,我們叫它轉殖。我們在初始化的時候,都要new一下建構函式,如果建構函式很長的話,那麼初始化操作的效率就太低了!所以一般在初始化的資訊不發生變化時,轉殖是最好的辦法。這樣既隱藏了物件建立的細節,有對效能是大大的提高!就是乙個程式設計上的「複製貼上」,通過memberwiserclone來實現!
這裡涉及了深複製和淺複製,和之前的引用型別資料和數值型別資料有關,如果你複製的是引用型別,淺複製就是你複製的是最原本的物件,就拿抄作業舉例,小文抄小明的,但是小王也不會,他也抄的是小明的,而深複製則是複製引用的物件,就是小文抄小明的,小王抄小文!
將乙個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示!問題:「死」字印刷
解決方案:活字印刷
製造過程和拼裝過程分離,使用者只需要拼裝就好,實際的製造過程無需了解!
主要用於建立乙個複雜的物件,這些物件的內部構造順序通常是穩定的,但是物件內部的構建通常面臨著複雜的變化。
不要讓時間白白流逝!
設計模式 建立型模式 原型模式
1 原型模式 prototype模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 2 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 3 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...
設計模式 建立型模式
建立型模式 與物件的建立有關。1 簡單工廠模式 靜態工廠 簡單工廠關聯具體類,通過簡單工廠來建立具體的類。封裝變化到簡單工廠裡面去。工廠類 具體類 2 工廠模式 抽象工廠 具體工廠 具體類 要是新增新的類,只需要擴充套件就可以了。他們對外的行為是一致的。3 抽象工廠 抽象工廠 具體工廠 具體類 具體...
設計模式 建立型模式
建立型模式 工廠方法 核心 客戶端呼叫具體的工廠,讓工廠去決定例項化哪個具體的類。核心 為工廠類建立對應的具體的類,表現為和對應的具體類的依賴關係。抽象工廠類 inte ce productfactory 具體a工廠 class concreteproductfactorya productfact...