建造者模式(builder pattern)使用多個簡單的物件一步一步構建成乙個複雜的物件。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。
該類圖還是沿用咱們之前的車的場景來做說明,從圖中可以看出,建造者模式很像是抽象模式的拓展。
首先我們先建立了乙個抽象方法,抽象方法裡包含了start,stop,run抽象方法,需要子類去繼承實現,然後定義了乙個抽象方法driver(),該方法依賴sequence()的集合來判斷是否呼叫start,stop,run幾個方法。
到此建造者登場,簡單來說建造者就是對我們sequence()集合設定值,來改變咱們car抽象方法的執行結果,當然建造者可以有無數種可能,比如是否同時生產兩種型別車等,都可以定義。最後面我們director來指揮組合建造者構建最終的產品給到客戶,也就是我們最後面的builderpattern進行具體的呼叫
檔案結構如下:
**示例如下:
public
abstract
class
carif
("run"
.equals
(str))if
("stop"
.equals
(str))}
);}public
void
setsequence
(list
sequence)
}
public
class
benz
extends
car@override
public
void
run(
)@override
public
void
stop()
}
public
class
bmwextends
car@override
public
void
run(
)@override
public
void
stop()
}
public
abstract
class
carbuilder
public
class
bmwbuilder
extends
carbuilder
@override
public
void
setsequence
(list
sequence)
}
public
class
benzbuilder
extends
carbuilder
@override
public
void
setsequence
(list
sequence)
}
public
class
director
public benz getbbenz()
public bmw getabmw()
}
執行結果如下:public
class
builderpattern
}
注意事項:與工廠模式的區別是:建造者模式更加關注與零件裝配的順序。
設計模式學習 七 建造者模式
將乙個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示,這樣的設計模式被稱為建造者模式。include using namespace std class product void setpartb int y void setpartc int z private int a,b,...
學習設計模式 建造者模式
說明 如果你需要將乙個複雜的物件或功能的構建流程和表示分離,使得同樣的構建流程,也可以建立出不同的表示,例如麥當勞做炸東西,炸東西的流程是一樣的,但放入的材料不同,炸出來的東西不一樣 例如雞排 雞腿 雞翅等 需求 使用者要個炸雞腿 解決方式 a.定義乙個產品類 炸東西 b.定義乙個構建產品部分或過程...
設計模式學習 建造者模式
建造者模式主要用於分離物件的建立和配置。呼叫元件負責提供資料。並負責將配置資料傳遞給建造者。建造者代替呼叫元件去建立響應的物件。好處 何時使用 示例程式 新建乙個名為builder的 osx命令列程式 實現如下 class burger let customername string let veg...