很多人都喜歡吃麥當勞,肯德基這樣的西式快餐,不單是因為方便快捷,而且不同的店做出來的味道基本差不多,滿足自己的口味。但是不同的店鋪,不同的廚師,做出來的食物口味相差不多,是不是有點神奇。其實明白了其中的原理,實現這樣的效果還是挺簡單的。要想滿足食物的味道在不同人的操作下相差不大,只要對每種食物制定一套規範的工作流程,原料放多少,加熱幾分鐘,放多少調料…不同的人按照這個流程製作,做出來的食物口味上就大同小異了。而顧客點餐的時候,只需要把顧客想要的選單給後廚,後廚就能按照這麼一套流程做出相應的食物提供給顧客,並且使顧客完全感受不到這套流程的存在。
其實上述的模式,就是建造者模式。建造者模式將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
建造者模式可以將乙個產品的內部表象與產品的生成過程分割開來,從而可以是乙個建造過程生成具有不同的內部表象的產品物件。如果我們使用建造者模式,那麼使用者就只需指定需要建造的型別就可以得到它們, 而具體建造的過程和細節就不需要知道了。
通常我們用建造者模式建立一些複雜的物件,這些物件內部構建間的建造順序通常是穩定的,但物件內部的構建通常面臨著複雜的變化。建造者模式的好處就是使得建造**與表示**分離,由於建造者隱藏了該產品是如何組裝的,所以若需要改變乙個產品的內部表示,只需要再定義乙個具體的建造者就可以了。
builder:抽象建造者。宣告為建立乙個產品物件的各個部件指定的抽象介面。
concretebuilder:具體建造者。
director:指揮者。構建乙個使用builder介面的物件,用於建立乙個複雜的物件,它主要有兩個作用,一是隔離了物件的生產過程,二是負責控制產品物件的生產過程。
product:產品角色。
過年了,本市最有名氣的飯店為了應對節中火爆的客流量和不同的口味,為魚香肉絲定製了兩套流程,一種是偏甜的,一種是偏辣的。
產品類:
public
class
yxrs
public
void
setingredients
(string ingredient)
public list
getcondiment()
public
void
setcondiment
(string condiment)
@override
public string tostring()
';}}
抽象建造者:
public
abstract
class
builder
}
具體建造者:
public
class
sweetbuilder
extends
builder
@override
public
void
buildercondiment()
}
指揮者:
public
class
yxrsdirector
public yxrs construct()
}
建造者模式
1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...
建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
建造者模式
建造者模式將複雜物件的構建和它的表示分離,使同樣的構建過程能夠構建出不同的表示。以乙個建造小人為例子,可以建造2種小人,胖子和瘦子 include using namespace std class builder 抽象建造者類 class buildthinman public builder 瘦...