建造者模式(Builder)

2021-10-06 23:03:25 字數 3177 閱讀 2309

優缺點總結

建造者模式(builder),將乙個複雜物件的構建與它的表示分離使得同樣的構建過程可以建立不同的表示。

product(產品角色):乙個具體的產品物件。

builder(抽象構建者):建立乙個product物件的各個部件指定的介面/抽象類concretebuilder(具體構建者):實現介面,構建和裝配各個部件

director(指揮者):構建乙個使用builder介面的物件。它主要是用於建立乙個複雜的物件。它主要有兩個作用,一是: 隔離了客戶與物件的生產過程,二是:負責控制產品物件的生產過程。

假設需求是:構建哥布林

哥布林的種類有:

初級哥布林(juniorgoblin)

投擲哥布林(throwgoblin)

冰霜哥布林(frostgoblin)

他們共有的屬性是:

名字(name)

生命值(hp)

傷害值(damage)

**(arms)

技能(skill)

client——產品角色

package 建造者模式;

public

class

goblin

public

void

setname

(string name)

public

intgethp()

public

void

sethp

(int hp)

public

intgetdamage()

public

void

setdamage

(int damage)

public string getarms()

public

void

setarms

(string arms)

public string getskill()

public

void

setskill

(string skill)

@override

public string tostring()

}

goblinbuild——抽象建造者

package 建造者模式;

// 抽象的建造者

public

abstract

class

goblinbuild

}

juniorgoblin——具體構建者1

package 建造者模式;

public

class

juniorgoblin

extends

goblinbuild

@override

public

void

buildhp()

@override

public

void

builddamage()

@override

public

void

buildarms()

@override

public

void

buildskill()

}

throwgoblin——具體構建者2

package 建造者模式;

public

class

throwgoblin

extends

goblinbuild

@override

public

void

buildhp()

@override

public

void

builddamage()

@override

public

void

buildarms()

@override

public

void

buildskill()

}

frostgoblin——具體構建者3

package 建造者模式;

// 抽象的建造者

public

abstract

class

goblinbuild

}

goblindirector——指揮者

package 建造者模式;

public

class

goblindirector

// 通過setter傳入goblinbuild

public

void

setgoblinbuild

(goblinbuild goblinbuild)

// 如何處理構造房子的流程,交給指揮著

public goblin constructgoblin()

}

client——客戶端

package 建造者模式;

public

class

client

}

哥布林 [name=初級哥布林, hp=

10, damage=

1, arms=木棒, skill=自爆]

----

----

--哥布林 [name=投擲哥布林, hp=

11, damage=

2, arms=石頭, skill=快速連扔]

----

----

--哥布林 [name=冰霜哥布林, hp=

12, damage=

3, arms=冰稜, skill=使用冰buff附加冰凍能力]

優點:

擴充套件性強

便於控制細節風險

缺點:生產物件必須有共同點。

如果內部變化複雜,會有很多的構造類。

1、需要生成的物件具有複雜的內部結構。 

2、需要生成的物件內部屬性本身相互依賴。

等等。也就是說,現在學了建造者模式,還不知道它是用來幹什麼的,等以後了解了再回來補充把。。。

Builder 建造者模式

模式定義 builder模式很好地將乙個複雜物件的建立與該物件內部的各個部件的組裝分離開來。它和 abstract factory模式有相似的地方,但是abstract factory主要提供了乙個建立一些列相關或相互依賴的物件的介面,無需知道指定他們具體的類 生產者 而builder模式著重於部件...

建造者模式(Builder)

工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立復合物件,所謂復合物件就是指某個類具有不同的屬性,其實建造者模式就是前面抽象工廠模式和最後的test結合起來得到的。我們看一下 還和前面一樣,乙個sender介面,兩個實現類mailsender和smssende...

建造者模式(Builder)

4 建造者模式 builder 工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立復合物件,所謂復合物件就是指某個類具有不同的屬性,其實建造者模式就是前面抽象工廠模式和最後的test結合起來得到的。我們看一下 建造者類如下 抽象產品類,使用了模板方法模式,不同產...