模式02 生成器模式 Builder

2022-08-30 08:57:13 字數 1861 閱讀 7562

1. 意圖

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

2. 結構

此模式的結構如下圖所示。

3. 參與者

4. 協作

下圖的互動圖說明了builder和director是如何與乙個客戶協作的。

5. 效果

以下是builder模式的主要效果:

1)它使你可以改變乙個產品的內部表示builder物件提供給導向器乙個構造產品的抽象介面。該介面使得生成器可以隱藏這個產品的表示和內部結構。它同時也隱藏了該產品是如何裝配的。因為產品是通過抽象介面構造的,你在改變該產品的內部表示時所要做的只是定義乙個新的生成器。

2)它將構造**和表示**分開builder模式通過封裝乙個複雜物件的建立和表示方式提高物件的模組性。客戶不需要知道定義產品內部結構的類的所有資訊;這些類是不出現在builder介面中的。每個concretebuilder包含了建立和裝配乙個特定產品的所有**。這些**只需要寫一次;然後不同的director可以復用它以在相同部件集合的基礎上構建不同的product。

3)它使你可對構造過程進行更精細的控制builder模式與一下子就生成產品的建立型模式不同,它是在導向者的控制下一步一步構造產品的。僅當該產品完成時導向者才從生成器中取回它。因此builder介面相比其他建立型模式能更好地反應產品的構造過程。這使你可以更精細地控制構建過程,從而能更精細地控制所得產品的內部結構。

【摘自《設計模式 可復用物件導向軟體的基礎》機械工業出版社】

1. 意圖

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

2. 結構

此模式的結構如下圖所示。

3. 參與者

4. 協作

下圖的互動圖說明了builder和director是如何與乙個客戶協作的。

5. 效果

以下是builder模式的主要效果:

1)它使你可以改變乙個產品的內部表示builder物件提供給導向器乙個構造產品的抽象介面。該介面使得生成器可以隱藏這個產品的表示和內部結構。它同時也隱藏了該產品是如何裝配的。因為產品是通過抽象介面構造的,你在改變該產品的內部表示時所要做的只是定義乙個新的生成器。

2)它將構造**和表示**分開builder模式通過封裝乙個複雜物件的建立和表示方式提高物件的模組性。客戶不需要知道定義產品內部結構的類的所有資訊;這些類是不出現在builder介面中的。每個concretebuilder包含了建立和裝配乙個特定產品的所有**。這些**只需要寫一次;然後不同的director可以復用它以在相同部件集合的基礎上構建不同的product。

3)它使你可對構造過程進行更精細的控制builder模式與一下子就生成產品的建立型模式不同,它是在導向者的控制下一步一步構造產品的。僅當該產品完成時導向者才從生成器中取回它。因此builder介面相比其他建立型模式能更好地反應產品的構造過程。這使你可以更精細地控制構建過程,從而能更精細地控制所得產品的內部結構。

【摘自《設計模式 可復用物件導向軟體的基礎》機械工業出版社】

6 生成器模式 builder

將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。builder 生成器介面,定義建立乙個product物件所需的各個部件的操作。concretebuilder 具體的生成器實現,實現各個部件的建立,並負責組裝product物件的各個部件,同時還提供乙個讓使用者獲取組裝完成後...

設計模式9 生成器模式(Builder)

生成器模式的本質 分離整體構建演算法和部件構造 模式定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。package com public class productpackage com public inte ce builderpackage com.impl i...

生成器模式

閱讀 研磨設計模式 筆記。之後若有所感,再補充。生成器模式目的 將乙個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。示例 description 描述輸出到檔案頭的物件 author liuwei date 2014 4 17 version 1.0 public class...