將乙個複雜物件的構建和他的表示分離,使得同樣的構建過程可以創造不同的表示
注:在模板方法中,實現了父類呼叫子類方法的功能,且,通過鉤子實現了方法的選擇性呼叫。但是其中整體的順序固定的,先做什麼再做什麼,不用做的通過鉤子遮蔽。
而創造者模式就是對這個固定順序進行調整使得其更好工作的乙個模式。
角色分工:
product產品類,通過模板方法模式實現,有基本方法和模板方法
builder抽象建造者,規範產品的元件,一般由子類實現
concretebuilder具體建造者,實現抽象類定義的所有方法,並返回乙個建立好的物件
director導演類,負責安排已有模組的順序,然後告訴建造者開始建造
class product
public:
product();
~product();
private:
string productparta;
string productpartb;
string productpartc;
class builder
public:
virtual ~builder();
virtual void buildparta()=0;
virtual void buildpartb()=0;
virtual void buildpartc()=0;
virtual product* getproduct() = 0;
protected:
builder();
private:
product* _pro;
class concretebuilder:public builder
public:
concretebuilder();
~concretebuilder();
void buildparta();
void buildpartb();
void buildpartc();
product* getproduct();
class director
public:
director(builder* bld);
~director();
void construct()
{_bld->buildparta();
_bld->buildpartb();
_bld->buildpartc();
_bld->getproduct();
protected:
private:
builder* _bld;
①優點封裝性
建造者獨立,容易擴充套件--》就是這個所謂不同的順序的具體描述了
便於控制細節風險,細節問題封裝在建造者中,所以互不影響
②使用場景
相同方法,不同順序
多個部件可以組裝,但是產生的結果不同時
產品類非常複雜或者呼叫順序不同,產生的功能不同
物件建立過程中會使用到的系統中的其他物件時,這些物件在產品物件的建立過程不易得到時,可以採用建造者模式瘋長該物件的建立過程。這是乙個補償方法。
③注意事項
建造者模式關注的是零件型別和裝配工藝(順序),這是他和工廠模式最大的不同。模板方法側重子類控制父類
在建造者模式中使用模板方法。就是前面已經用過的
建造者模式最主要的功能是基本方法的呼叫順序安排,組裝已有零件;而工廠模式則是造輪子。
設計模式C 實現(6) 建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
設計模式C 實現(6) 建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
設計模式C 實現(6) 建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...