一 建立型模式
1 建立型模式抽象了例項化的過程
將物件的建立,組合,表示獨立於系統。乙個類建立型模式使用繼承來改變被例項化的物件,
乙個物件的建立型模式是將例項化委託給另乙個物件,以避免硬編碼(hard_coding)帶來了的不可擴充套件和不能靈活應對變化,
而來降低物件之間關係的重新更改或者組合或者復合所帶來的複雜性。
建立型模式是解決物件例項化問題:由誰建立,怎麼建立……
二 建立型模式之間的比較
1 abstractfactory模式:
提供乙個建立一系列相關或者相互依賴物件的介面,而無需制定他們具體的類。
將乙個完整的產品建立,委託給abstractfactory,將完整產品拆分成許多相關或者相互依賴的部分,
各部分產品都是可以繼續擴充套件變化,abstractfactory需要提供的是乙個完整產品建立中各個部分產品建立的介面。
client需要使用這些介面建立產品各個部分的,以便組合成乙個完整物件。所以abstractfactory體現了一種部分與整體的關係。
2 build模式:
將乙個複雜物件的構建與它的表示分離,使得同樣的建立過程可以建立不同的
表示。複雜物件的構建,體現在就是使用乙個導向器(ditector),作用就是建立物件的各個部分對於不同的builder,
之間存在的差別相對較大,director就是封裝了這種複雜性,使得同樣的過程,處理不同的複雜邏輯,但是得到不同的表示。
3 factorymethod模式:
定義乙個用於建立物件的介面,讓子類去決定例項化那乙個類。使乙個類例項延遲到其子類。
這個說法真實讓人難以理解,前面幾個模式似乎都可以實現其所描述的功能:子類決定例項化那乙個類。
可能factorymethod更專注於獨立物件的建立,使用子類僅僅是建立物件,這些物件可以是相關的或者無關的,或者是具有相同意義的……
4 prototype模式:
用原型例項制定建立物件的種類,並且通過拷貝這些原型例項建立新的物件。
通過自身建立乙個新的物件,這在什麼樣的情況下才是需要的呢?這個著實讓人難以理解。
想象為什麼複製能讓某些操作變得簡單……但這在實際**中卻不是copy那麼回事那麼簡單?
可能是在框架中會有使用,來簡化相似物件的建立和初始化工作,或者撲捉某物件執行時刻的資訊……
5 singleton模式:
保證乙個類僅有乙個例項,並提供乙個它的全域性訪問點。
對這些模式理解尚淺,純屬個人偏見,請多指教!
設計模式學習總結 建立型模式
五大建立型設計模式的注意事項 1.單例 singleton 建構函式private或protected,防止外部例項化 雙層鎖定例項化,防止多執行緒的多個例項化 類要sealed,防止被繼承後派生新增例項 餓漢 懶漢兩種型別,各有千秋 2.原型 prototype clone 淺拷貝,複製值型別,不...
設計模式學習總結 建立型模式
五大建立型設計模式的注意事項 1.單例 singleton 建構函式private或protected,防止外部例項化 雙層鎖定例項化,防止多執行緒的多個例項化 類要sealed,防止被繼承後派生新增例項 餓漢 懶漢兩種型別,各有千秋 2.原型 prototype clone 淺拷貝,複製值型別,不...
設計模式學習總結 建立型模式
五大建立型設計模式的注意事項 1.單例 singleton 建構函式private或protected,防止外部例項化 雙層鎖定例項化,防止多執行緒的多個例項化 類要sealed,防止被繼承後派生新增例項 餓漢 懶漢兩種型別,各有千秋 2.原型 prototype clone 淺拷貝,複製值型別,不...