設計模式 建造者模式(Builder)

2022-04-03 22:14:26 字數 1802 閱讀 9677

定   義:將乙個複雜物件的構建與它的表示分離,使得同一構建過程可以建立不同的表示。

結構圖

產品類

class

product

public

void

show()}}

view code

抽象建造者類

abstract

class

builder

view code

具體建造者類

///

///具體建造者類1

/// class

concretebuilder1 : builder

public

override

void

builderpartb()

public

override

product getresult()

}//////

具體建造者類2

/// class

concretebuilder2 : builder

public

override

void

builderpartb()

public

override

product getresult()

}

view code

指揮者類

class

director

}

view code

客戶端**

director director = new

director();

builder b1 = new

concretebuilder1();

builder b2 = new

concretebuilder2();

director.construct(b1);

//指揮者用concretebuilder1的方法來建立產品

product p1 =b1.getresult();

p1.show();

director.construct(b2);

//指揮者用concretebuilder2的方法來建立產品

product p2 =b2.getresult();

p2.show();

view code

優點:

•使用者只需要指定要建造的型別就可以得到它們,而具體的建造過程和細節不需要知道。

•建造**與表示相分離,如果要改變乙個產品的內部表示,只要再定義乙個新的具體的建造者就可以了。

•建造過程由指揮者來控制,建造細節由乙個抽象類來控制,對於實現建造細節的具體類來說,不會遺漏某乙個步驟。

缺點:

•產品的構造元件被定義在builder,增加新的產品的乙個細節需要修改builder,違背了「開閉原則」。

應用情景:

•當建立複雜物件的演算法應該獨立於該物件的組成部分以及它們的裝配方式時。

•當複雜物件的部件相對穩定,不會發生變化時。

Java設計模式(五) 建造者模式Builder

我們要建造乙個複雜的產品。比如 神舟飛船 iphone。這個複雜的產品的建立,有這樣乙個問題需要處理 要構建的物件,宇宙飛船 package com.iter.devbox.builder 宇宙飛船 author shearer public class airship public orbital...

設計模式讀書筆記之建造者模式 Builder

建造者模式 將複雜物件的建造和表示分離,使同樣的建造過程可以創造出不同細節的產品.建造者模式,聽名字就應該知道和工廠模式一樣,是用來創造物件的。但是建造者和工廠模式的區別就是工廠模式只關注最終的產品,它往往是簡單的呼叫被建立者的建構函式 而建造者更關心細節,它定義了建立乙個複雜物件所需的步驟,而建立...

設計模式 建造者模式

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