builder:為建立乙個product物件的各個部件定義指定的抽象方法,並提供乙個返回該product的方法。
concretebuilder:實現builder的介面以構造和裝配該產品的各個部件。
director:導演類,用於指導具體構建者如何構建產品,控制呼叫先後次序,並向呼叫者返回完整的產品類。
product:表示被構造的複雜物件。包含定義組成部件的類,包括將這些部件裝配成最終產品的介面。
定義英雄類(產品)
public
class
hero
抽象的builder類
public
abstract
class
abstractherobuilder
}
兩種英雄的builder實現
/**
* 瑞文的技能生成器
* * @author: jsk
* @date: 2019/8/10 15:56
*/public
class
rivenbuilder
extends
abstractherobuilder
@override
public
void
buildskillw()
@override
public
void
buildskille()
@override
public
void
buildskillr()
}/**
* 亞索的技能生成器
* * @author: jsk
* @date: 2019/8/10 15:56
*/public
class
yasuobuilder
extends
abstractherobuilder
@override
public
void
buildskillw()
@override
public
void
buildskille()
@override
public
void
buildskillr()
}
定義技能指導類
public
class
skilldirector
public hero construct()
}
客戶端執行
public
class
heroclient
}
執行結果
若不是建立特別複雜的物件,可省略導演類(director)並把builder作為product中的乙個內部靜態類。其中,建立builder的時候傳入該product的必要引數,其餘擴充套件引數使用addxx()方法來傳入;最後在提供乙個build()方法來返回product物件。
實現如下:
public
class
product
public
static
class
builder
public builder addpartb
(string partb)
public builder addpartc
(string partc)
public product build()
}}// 建立方式
product product =
newproduct.builder
("a").
addpartb
("b").
addpartc
("c").
build()
;
建立模式 生成器模式
生成器模式 builder 將乙個複雜物件的建立與表示分離開 對其複雜的建立過程和部件進行解耦 使同樣的建立過程可以建立不同的表示.如果當你的物件的建立過程可以和每個部件的建立過程分離開 並且可能通過組裝不同的建立部件可以生成不同的物件 就可以使用生成器模式.如同生成乙個汽車 你可以通過不同的組裝方...
生成器模式
閱讀 研磨設計模式 筆記。之後若有所感,再補充。生成器模式目的 將乙個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。示例 description 描述輸出到檔案頭的物件 author liuwei date 2014 4 17 version 1.0 public class...
生成器模式
生成器模式的定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。我們先來看乙個簡單的例子,比如說product類是乙個複雜的類,構建它需要許多步驟 class product 我們需要定義乙個抽象的生成器類builder,來定義構建product的步驟 abstract ...