設計模式學習 建造者模式

2021-09-24 06:45:49 字數 2081 閱讀 5551

建造者模式主要用於分離物件的建立和配置。呼叫元件負責提供資料。並負責將配置資料傳遞給建造者。建造者代替呼叫元件去建立響應的物件。

好處

何時使用

示例程式

新建乙個名為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的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...