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