19 Builder創建者(創建型)
-
- 動機:
- RTF(富文本格式)文檔交換格式的閱讀器應該能夠將RTF轉換爲許多文本格式。但是,可能的轉換數量是開放的。因此,在不修改閱讀器的情況下添加新的轉換應該很容易。
- 建造者模式將產品的結構和產品的零件建造過程對客戶端隱藏起來,把對建造過程進行指揮的責任和具體建造者零件的責任分割開來,達到責任劃分和封裝的目的
- 動機:
-
- 什麼時候用:
- 創建複雜對象的算法應該獨立於組成對象的各個部分以及它們的組裝方式。
- 構造過程必須允許被構造對象的不同表示。
- 結構:
- 參與者:
- Builder:指定用於創建產品對象部分的抽象接口。生成一個地基
- concrete builder:
- 構造和組裝產品的各個部分。
- 定義並跟蹤它創建的表示。
- 提供了檢索產品的接口(方法)。
- Director:使用Builder接口構造對象。
- product:表示正在構建的複雜對象。
- 協作:
- 客戶端創建Director對象,並將其配置爲所需的Builder對象。
- 當需要構建產品的一部分時,Director通知構建器Builder。
- Builder處理來自director的請求並向產品添加部件。
- 客戶端檢索(取回)的產品構建器。
- 後果:
- 它允許您更改產品的表示形式。
- 構建器模式可以爲director提供一個抽象的構建器來構建產品。
- 它隔離了用於構造和表示的代碼。
- 構建器模式通過封裝複雜對象的構造和表示方式來改進模塊性。客戶不需要知道任何定義產品內部結構的類;此類類不會出現在builder的接口中。
- 它能讓你更好地控制施工過程。
- 構建器模式在director的控制下逐步構建產品。只有當產品完成時,客戶端才從構建器檢索它。
- 它允許您更改產品的表示形式。
- Builder VS Template Method
- 在Builder模式中,Director決定Builder中方法的調用順序;
- 什麼時候用:
-
- 在模板方法中,超類決定子類方法的調用順序。