設計模式 建造者 生成器

2021-06-18 08:20:46 字數 1392 閱讀 5057

生成器模式,也叫建造者模式。有人說後者是想強調該模式重點是強調建造過程,而不是生成。

個人比較認同,所以後文也叫建造者模式。

建造者模式,主要意圖是將物件的建造於他的表示分離。從而使得同樣的建造過程可以建造出不同的產品。

參與者有建造者,導演和具體的產品。

舉例說明,我們想生產電腦,電腦就是產品。宣告乙個類,叫builder,而具體的建造者,需要繼承自這個父類,並實現其構造方法,並最終返回構造後的產品。

這裡變化的部分就是,不同的建造者和構造過程。建造者可以通過繼承出新的類來實現擴充套件。

而建造過程,通過乙個director類來封裝。每個過程可以對應乙個新的導演。導演負責呼叫具體建造者對應的建造方法。並最終獲取其生產的產品。

/**

* @file test_builder.cpp

* @author itegel

* @date 2013/09/12 10:07:27

* @brief

* **/

#include #include using namespace std;

class computerbuilder

virtual ~computerbuilder(){}

virtual void buildbody(){

cout<<"no body!"m_computer_builder->buildscreen();

m_computer_builder->buildmouse();

m_computer_builder->buildkeybord();

cout<<"result:"pc builder working...

pc body built!

pc screen built!

pc mouse built!

pc keybord built!

result:

a pc with: a body; a screen; a mouse; a keybord;

ipad builder working...

ipad body built!

ipad screen built!

no mouse!

no keybord!

result:

an ipad with: a body; a screen;

該模式,主要是分離了具體組裝過程和每個過程的實現。適用於構造過程複雜,並且可以有多種建造方式的場景。建造過程和不同的建造方法很容易擴充套件。

缺點看起來是客戶端需要知道有哪些建造者和建造過程。由客戶端來選擇具體的導演類和建造者。如果客戶端不關注這些,那麼就不適用了。

跟抽象工廠的區別是,抽象工廠強調多個系列產品兌現搞得構造方式,而建造者強調構造乙個複雜物件的過程。

生成器(建造者)模式

意圖 將乙個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示。情景 生產不同規格的電腦。規格一,規格二 關鍵點 product 具體產品 表示被構造的複雜物件。builder 抽象構建產品 為建立乙個產品物件的各種部件指定抽象介面。builderimpl 抽象構建的具體實現 實現b...

建造者模式(生成器模式)

1.將複雜的物件的構建與其表示分離,使同樣的構建過程可以有不同的表示 如下 父類抽象,採用模板方法模式,定義一系列演算法,抽象,定義一模板,由sequence 動態決定演算法是否執行 子類將繼承該類並實現3個演算法 abstract class design mode builder pattern...

設計模式 1 6建造者模式(生成器模式)

建造者模式 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程建立不同的表示。與工廠模式不同,建造者模式是在導向者的控制下一步一步構造產品的。建立者模式可以能更精細的控制構建過程,從而能更精細的控制所得產品的內部結構。對於客戶來說,只需知道導向者就可以了,通過導向者,客戶就能構造複雜的物件,而不...