詳解設計模式 建造者模式

2021-08-01 15:52:43 字數 2085 閱讀 5488

建造者模式

(builder)

將乙個複雜的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。主要解決在軟體系統中,有時候面臨著

"乙個複雜物件

"的建立工作,由於需求的變化,這個複雜物件的某些部分經常面臨著劇烈的變化,一些基本部件不會變。所以需要將變與不變分離。與抽象工廠的區別:在建造者模式裡,有個指導者

(director)

,由指導者來管理建造者,使用者是與指導者聯絡的,指導者聯絡建造者最後得到產品。即建造者模式可以強制實行一種分步驟進行的建造過程。

建造者類圖:

建造者模式四要素:

似乎很抽象。舉個例子:前面你建立了乙個生產保時捷的工廠,生產一台保時捷

911需要的主要部件都一樣

(引擎,輪子,方向盤

...)

和流程是不變的,變的是引擎,輪子,控制系統等等部件具體實現,這些部件的生產交由具體的builder

去生產

//抽象生產者

1. 

public

inte***ce

builder

1. 

//具體生產者

2. 

public

class

concretebuilder

implements

builder

10.

11.

@override

12.

public

void

buildpartb()

15.

16.

@override

17.

public

void

buildpartc()

20.

21.

@override

22.

public

product

buildproduct()

25. }

1. 

//產品由各個元件組成

2. 

public

class

product

1. 

//指導者

,產品生產流程規範

2. 

public

class

director

9. 

//生產流程

10.

public

void

buildproduct()

15. }

1. 

public

static

void

main

(string

args)

建造者模式優點:

適用場景:需要生成的物件具有複雜的內部結構;需要生成的物件內部屬性本身相互依賴。

class car

inte***ce builder

//911製造者

class builder911 implements builder

@override

public void buildengine()

@override

public void buildwheel()

@override

public car buildcar() }

//cayma製造者

class buildercayma implements builder

@override

public void buildengine()

@override

public void buildwheel()

@override

public car buildcar() }

//指導者

class director

public car build() }

public class main

}

設計模式詳解之建造者模式

建造者模式屬於建立型模式,提供了一種建立物件的最佳方式。定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。主要作用 在使用者不知道物件的建造過程和細節的情況下就可以直接建立複雜的物件。product產品類 通常是實現了模板方法模式 這裡可以後續看我的更新部落格,如果我更...

設計模式 建造者模式

在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...

設計模式建造者模式

今天看了乙個設計模式。總結下,以免忘了。如何引入建造者模式的呢?作者舉了個例子。建造小人。當然需要 頭,左手,右手,左腳,右腳,軀幹。建造的過程使用 使用類裡面的方法就行了。但是如果需要乙個胖的小人,乙個瘦的小人呢?就需要重新構造乙個胖人類,乙個瘦人類。當然 使用者還需要自己處理構造的過程。這樣 就...