建造者模式主要用於分離物件的建立和配置。呼叫元件負責提供資料。並負責將配置資料傳遞給建造者。建造者代替呼叫元件去建立響應的物件。
好處
何時使用
示例程式新建乙個名為builder的 osx命令列程式
實現如下**
輸出結果/
class
burger
let customername:string
let veggieproduct:bool
let patties:int
let pickles:bool
let mayo:bool
let ketchup:bool
let cook:cooked
init(name:string,veggie:bool,patties:int,pickles:bool,
mayo:bool,ketchup:bool,lettuce:bool,cook:cooked)
func
printdescription
()
}/final
class
burgerbuilder
func
setpickles
(_ choice:bool)
-> burgerbuilder
func
setmayo
(_ choice:bool)
-> burgerbuilder
func
setketchup
(_ choice:bool)
-> burgerbuilder
func
setlettuce
(_ choice:bool)
-> burgerbuilder
func
setcooked
(_ choice:burger.cooked)
-> burgerbuilder
func
addpatty
(_ choice:bool)
-> burgerbuilder
func
buildburgerobject
(name:string)
-> burger
}/let builder = burgerbuilder()
let burger:burger = builder
.setveggie(true)
.setmayo(false)
.setcooked(.welldone)
.addpatty(false)
.buildburgerobject(name: "joe")
burger.printdescription()
複製**
上面**中設定屬性的方法返回值可以不寫。這裡這麼寫為了實現鏈式呼叫。name joe
vegie true
patties 2
pickles false
mayo false
ketchup true
cook well done
複製**
輸出結果:cocoa 中 建造者模式的應用
var datebuilder = datecomponents()
datebuilder.hour = 10
datebuilder.day = 6
datebuilder.month = 9
datebuilder.year = 1950
datebuilder.calendar = calendar(identifier: .gregorian)
iflet date = datebuilder.date
複製**
1950-09-06 02:00:00 +0000
複製**
學習設計模式 建造者模式
說明 如果你需要將乙個複雜的物件或功能的構建流程和表示分離,使得同樣的構建流程,也可以建立出不同的表示,例如麥當勞做炸東西,炸東西的流程是一樣的,但放入的材料不同,炸出來的東西不一樣 例如雞排 雞腿 雞翅等 需求 使用者要個炸雞腿 解決方式 a.定義乙個產品類 炸東西 b.定義乙個構建產品部分或過程...
設計模式學習 建造者模式
下面是建造者模式鏈式實現的 省略了getter和setter。使用建造者模式實現computer的例項化 如果使用構造方法初始化,引數將有5個,會使構造方法的使用過於複雜 public class computer override public string tostring public sta...
設計模式 建造者模式
在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...