Builder(生成器)--对象创建型模式
Builder(生成器)–對象創建型模式
一、意圖
將一個復雜的對象構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
二、動機
1.在軟件系統中,有時候面臨著“一個復雜對象”的創建工作,其通常由各個部分的子對象用一定的算法構成;由于需求的變化,這個復雜對象的各個部分經常面臨著劇烈的變化,但是將它們組合在 一起的算法卻相對穩定。
2.如何應對這種變化?如何提供一種“封裝機制”來隔離出“復雜對象的各個部分”的變化,從而保持系統中的“穩定構建算法”不 隨著需求改變而改變?
三、適用性
1.當創建復雜對象的算法應該獨立于該對象的組成部分以及它們的裝配方式時。
2.當構造過程必須允許被構造的對象有不同的表示時。
四、結構
五、效果
1.它使你可以改變一個產品的內部表示。
2.它將構建代碼和表示代碼分開。
3.它使你可以對構造過程進行更精細的控制。
六、實現
1.裝配和構造接口。
2.為什么產品沒有抽象類。
3.在build中缺省的方法為空。
七、要點總結
1.Builder 模式主要用于“分步驟構建一個復雜的對象”。在這其中 “分步驟”是一個穩定的算法,而復雜對象的各個部分則經常變化。
2.變化點在哪里,封裝哪里—— Builder模式主要在于應對“復雜對 象各個部分”的頻繁需求變動。其缺點在于難以應對“分步驟構建 算法”的需求變動。
3.在Builder模式中,要注意不同語言中構造器內調用虛函數的差別 (C++ vs. C#) 。
八、舉例說明:
造一輛車子,要造輪子,造發動機,造座椅等。然后可以詳細的控制輪子、發動機、座椅等的配置。比如輪子的材質選擇、發動機的螺絲釘的個數、座椅的高低等。它注重細節。讓細節和表現分開。
本文為李建忠設計模式視頻的筆記以及《設計模式-可復用面向對象的軟件的基礎》和自己的部分見解
總結
以上是生活随笔為你收集整理的Builder(生成器)--对象创建型模式的全部內容,希望文章能夠幫你解決所遇到的問題。