23種設計模式(二)元件協作之模板方法
23種設計模式(三)元件協作之策略模式
23種設計模式(四)元件協作之觀察者模式
23種設計模式(五)單一職責之裝飾模式
23種設計模式(六)單一職責之橋模式
23種設計模式(七)物件建立之工廠方法
23種設計模式(八)物件建立之抽象工廠
23種設計模式(九)物件建立之原型模式
23種設計模式(十)物件建立之構建器
23種設計模式(十一)物件效能之單件模式
23種設計模式(十二)物件效能之享元模式
23種設計模式(十三)介面隔離之門面模式
23種設計模式(十四)介面隔離之**模式
23種設計模式(十五)介面隔離之介面卡
23種設計模式(十六)介面隔離之中介者
23種設計模式(十七)狀態變化之狀態模式
23種設計模式(十八)狀態變化之備忘錄
23種設計模式(十九)資料結構之組合模式
23種設計模式(二十)資料結構之迭代器
23種設計模式(二十一)資料結構之職責鏈
23種設計模式(二十二)行為變化之命令模式
23種設計模式(二十三)行為變化之訪問器
23種設計模式(二十四)領域規則之解析器
在軟體系統中,有時候面臨著「乙個複雜物件」的建立工作,其通常由各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。
class
house
;class
housebuilder
virtual
~housebuilder()
protected
:
house* phouse;
virtual
void
buildpart1()
=0;virtual
void
buildpart2()
=0;virtual
void
buildpart3()
=0;virtual
void
buildpart4()
=0;virtual
void
buildpart5()
=0;}
;class
stonehouse
:public house
;class
stonehousebuilder
:public housebuilder
virtual
void
buildpart2()
virtual
void
buildpart3()
virtual
void
buildpart4()
virtual
void
buildpart5()
};class
housedirector
house*
construct()
bool flag=phousebuilder-
>
buildpart3()
;if(flag)
phousebuilder-
>
buildpart5()
;return phousebuilder-
>
getresult()
;}};
構建的流程是穩定的,但是內部實現是變化的。
將乙個複雜物件的構建與其表示相分離,是的同樣的構建過程(穩定)可以建立不同的表示(變化)。
builder
模式主要用於分步驟構建乙個複雜的物件。在這其中分步驟是乙個穩定的演算法,而複雜物件的各個部分則經常變化。
變化點在**,封裝**–builder
模式主要在於應對複雜物件各個部分的頻繁需求變動。其缺點在於難以應對分步驟構建演算法的需求變動。
在builder
模式中,要注意不同語言中構造器內呼叫虛函式的差別(c++ vs. c#)。
23種設計模式 九 物件建立之原型模式
23種設計模式 二 元件協作之模板方法 23種設計模式 三 元件協作之策略模式 23種設計模式 四 元件協作之觀察者模式 23種設計模式 五 單一職責之裝飾模式 23種設計模式 六 單一職責之橋模式 23種設計模式 七 物件建立之工廠方法 23種設計模式 八 物件建立之抽象工廠 23種設計模式 九 ...
23種設計模式 七 物件建立之工廠方法
23種設計模式 二 元件協作之模板方法 23種設計模式 三 元件協作之策略模式 23種設計模式 四 元件協作之觀察者模式 23種設計模式 五 單一職責之裝飾模式 23種設計模式 六 單一職責之橋模式 23種設計模式 七 物件建立之工廠方法 23種設計模式 八 物件建立之抽象工廠 23種設計模式 九 ...
設計模式(十) 物件建立模式 Builder
物件建立模式 通過物件建立模式繞開物件建立new,避免new導致的緊耦合。典型模式有factory method,abstract method,prototype,builder 建造者模式builder 建造乙個房子,有五個步驟,現在有個石頭房,根據這五個步驟建成。五個步驟對於其他房子建設又不一...