什麼是建造者模式?
將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
建造者模式**示例:
**示例1:
1 #include2 #include 3 #include 4
using
namespace
std;56
class
person7;
1415
class thinperson : public
person16;
2223
void
thinperson::createhead()
2427
void
thinperson::createhand()
2831
void
thinperson::createbody()
3235
void
thinperson::createfoot()
3639
40class fatperson : public
person41;
4748
void
fatperson::createhead()
4952
void
fatperson::createhand()
5356
void
fatperson::createbody()
5760
void
fatperson::createfoot()
6164
65class
director
6673
74void
construct()
7581
};82
83//
客戶端**:
84void
main()
85100
//run out
101/*
102fat head
103fat hand
104fat body
105fat foot
106thin head
107thin hand
108thin body
109thin foot
110請按任意鍵繼續. . .
111*/
**示例2:
1 #include2 #include 3 #include 4
using
namespace
std;56
class
product716
17void
show()
1825 cout <27};
2829
class
builder30;
3637
class concretebuilder1 : public
builder
3847
virtual
void
buildera()
4851
virtual
void
builderb()
5255
virtual product *getresult()
5659
};60
6162
class concretebuilder2 : public
builder
6372
virtual
void
buildera()
7376
virtual
void
builderb()
7780
virtual product *getresult()
8184
};85
86class
director
8798 product *getresult()
99102
};103
104void
main()
105124
//run out
125/*
126one two
127aa bb
128請按任意鍵繼續. . .
129*/
建造者模式的優缺點
(1)優點
1、將複雜產品的建立步驟分解在不同的方法中,使得建立過程更加清晰,使得我們能夠更加精確的控制複雜物件的產生過程。
2、將產品的建立過程與產品本身分離開來,可以使用相同的建立過程來得到不同的產品。也就說細節依賴抽象。
3、每乙個具體建造者都相對獨立,而與其他的具體建造者無關,因此可以很方便地替換具體建造者或增加新的具體建造者,使用者使用不同的具體建造者即可得到不同的產品物件。
(2)缺點
1、建造者模式所建立的產品一般具有較多的共同點,其組成部分相似,如果產品之間的差異性很大,則不適合使用建造者模式,因此其使用範圍受到一定的限制。
2、如果產品的內部變化複雜,可能會導致需要定義很多具體建造者類來實現這種變化,導致系統變得很龐大。
good good study, day day up.
順序 選擇 迴圈 總結
建造者模式
1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...
建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
建造者模式
建造者模式將複雜物件的構建和它的表示分離,使同樣的構建過程能夠構建出不同的表示。以乙個建造小人為例子,可以建造2種小人,胖子和瘦子 include using namespace std class builder 抽象建造者類 class buildthinman public builder 瘦...