Java設計模式之建造者模式

2021-08-10 04:58:35 字數 2356 閱讀 6019

介紹

提起builder,我們第一時間想到的就是建築物,高樓大廈。在建造高樓大廈的時候,需要先打地基,搭建建築框架,然後自下而上地一層一層蓋起來。通常,在建造這種具有複雜結構的物體時,很難一氣呵成。我們需要首先建造組成這個物體的各個部分,然後分階段將它們組裝起來。而建造者模式(builder pattern),顧名思義,正是為建造複雜的物件而存在。

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

實現

在建造者模式中,一共有以下五個角色:

builder(建造者)

builder角色負責定義用於生成例項的介面。

concretebuilder(當前建造者)

concretebuilder角色是負責實現builder角色的介面的類。這裡定義了在生成例項時實際上被呼叫的方法。

director(導演類)

director角色負責使用builder角色的介面來生成例項。它並不依賴於concretebuilder角色。為了確保不論concretebuilder角色是如何被定義的,director角色都能正常工作,它只呼叫在builder角色中被定義的方法。

product(產品類)

這是乙個具體類而不是抽象類,一般來說會是乙個比較複雜的物件,即建立例項的過程比較複雜(步驟多或者步驟順序有要求等等)。

client(使用者)

client是最終使用builder模式的使用者。

下面,我們寫一段金拱門製作漢堡**的示例程式。

建造者

public abstract class builder
當前建造者
public class concretebuilder extends builder 

@override

public void builddrink()

@override

public void buildrefreshments()

@override

public void getproduct()

}

導演類
public class director 

public void construct()

}

產品類
public class product 

public void sethamburgername(string hamburgername)

public string getrefreshmentname()

public void setrefreshmentname(string refreshmentname)

public string getdrinkname()

public void setdrinkname(string drinkname)

}

使用者
public class client 

}

輸出結果
巨無霸**:巨無霸漢堡x1+麥樂雞x4+純牛奶x1
建造者模式總結優點1)封裝性好。建造者模式將複雜物件的建立依次拆分,並且封裝在了各個builder類內部,外部呼叫的人只需要正確的呼叫建造者和導演類就能建立物件,而不用關心內部是如何構建的。

2)易擴充套件。有新需求時,只需要新建乙個新的建造者類就可以實現,不用去修改之前的**,擴充套件很方便,也不會對既存的業務邏輯產生影響。

缺點

1)使用建造者模式,需要各個產品的建立過程具有很大的相似度,如果產品構建差異過大,則不適合使用建造者模式。

2)和工廠模式一樣,產品擴充套件的越多,具體的建造者類也就越多,一定程度上增加了系統的複雜度。

和工廠模式區別

工廠模式將物件的建立過程全部封裝在了工廠類裡面,而建造者模式的各個建造者類只負責各個元件的建立,最後物件的組裝由導演類來完成。

因此,相對於工廠模式來說,建造者模式適用於更複雜物件的建立。

java設計模式之建造者模式

概念 建造者模式是指把乙個複雜物件的構建和表示分離,就像建房子一樣,每乙個房子的建造流程都是相同的,但是卻會有很多形狀不一,樣式不同的房子,這裡的房子實際上就是房子這個物件的表示,建造的流程就是房子物件的構建 建造者模式的構成部分 1.builder介面 builder介面設計要表示物件的構建流程,...

Java設計模式之建造者模式

builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種物件建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承和過載的方式,動 態地建立具有復合屬性的物件。具體的構建物件 房子 public class h...

JAVA設計模式之建造者模式

分離物件子元件,子元件單獨構造 由builder來負責 和裝配模式 由director負責 從而可以構造出複雜物件。這個模式適用於某個物件構造特別複雜。由於實現了構建和裝配的解耦。不同的構建器,相同的裝配,也可以生產不同的物件的物件 相同的構建器和不同的裝配順序也可以構造不同的物件,這樣實現了構建演...