設計模式07 建造者模式

2021-10-01 19:13:15 字數 1385 閱讀 4290

這個直接用例子來理解,對於房子,有牆、門、窗,不同型別的房子牆、門、窗不同。在**中我有相應的解釋。

#

include

#include

using

namespace std;

//先抽象房子

class

house

void

setdoor

(string door)

void

setwindow

(string window)

//獲取門窗牆

string getwall()

string getdoor()

string getwindow()

};//牆、門、窗讓施工隊去建造

class

builder

;//不同型別的房子有不同的施工隊

//公寓建築隊

class

flatbuilder

:public

builder

virtual

void

makewall()

virtual

void

makedoor()

virtual

void

makewindow()

virtual house*

gethouse()

private

: house *m_house;};

//別墅建築隊

class

villabuilder

:public

builder

virtual

void

makewall()

virtual

void

makedoor()

virtual

void

makewindow()

virtual house*

gethouse()

private

: house *m_house;};

//總指揮,只需安排讓那個施工隊去建造即可,完成後直接向相應得施工隊要房子

class

direct

void

contruct()

private

: builder *m_builder;};

void

main()

結果:

07建造者模式

builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種物件建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立 過程加以抽象,通過子類繼承和過載的方式,動態地建立具有復合屬性的物件。二 建造者模式結構 其中建造者時乙個公共介面,提供...

設計模式 建造者模式

在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...

設計模式建造者模式

今天看了乙個設計模式。總結下,以免忘了。如何引入建造者模式的呢?作者舉了個例子。建造小人。當然需要 頭,左手,右手,左腳,右腳,軀幹。建造的過程使用 使用類裡面的方法就行了。但是如果需要乙個胖的小人,乙個瘦的小人呢?就需要重新構造乙個胖人類,乙個瘦人類。當然 使用者還需要自己處理構造的過程。這樣 就...