生成器模式 建立英雄

2021-09-26 01:58:13 字數 2061 閱讀 4377

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 ...