23種設計模式 十 物件建立之構建器

2021-10-09 23:22:26 字數 2083 閱讀 6361

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 建造乙個房子,有五個步驟,現在有個石頭房,根據這五個步驟建成。五個步驟對於其他房子建設又不一...