這個直接用例子來理解,對於房子,有牆、門、窗,不同型別的房子牆、門、窗不同。在**中我有相應的解釋。
#
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的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...
設計模式建造者模式
今天看了乙個設計模式。總結下,以免忘了。如何引入建造者模式的呢?作者舉了個例子。建造小人。當然需要 頭,左手,右手,左腳,右腳,軀幹。建造的過程使用 使用類裡面的方法就行了。但是如果需要乙個胖的小人,乙個瘦的小人呢?就需要重新構造乙個胖人類,乙個瘦人類。當然 使用者還需要自己處理構造的過程。這樣 就...