iOS設(shè)計(jì)模式-生成器模式 后記

UML


BUILDER UML

時(shí)序圖


BUILDER Sequence Chart

BUILDER設(shè)計(jì)模式總共有三個(gè)四個(gè)成員,Director、Builder、ConcreteBuilder、Result。

1.為什么Director和Builder是Aggregation關(guān)系?

可以這么理解:
1)只有在學(xué)校和學(xué)生兩者共同協(xié)作的情況下才能產(chǎn)出“畢業(yè)學(xué)生”。
2)學(xué)校沒了學(xué)生無(wú)法存活。所以是學(xué)校聚合學(xué)生。
3)學(xué)生沒了學(xué)校依然可以存活。所以學(xué)生被學(xué)校聚合。
4)學(xué)校和學(xué)生并不唯一綁定。并不是說只有小明去了太陽(yáng)小學(xué)才能畢業(yè),也不是太陽(yáng)小學(xué)只能教小明一個(gè)人。不同的學(xué)生和不同的學(xué)校之間會(huì)產(chǎn)生不同成績(jī)的“畢業(yè)學(xué)生”。
5)一個(gè)學(xué)??梢杂卸嘀薪逃椒ǎ╟onstruct)
6)小明不僅可以在太陽(yáng)小學(xué)上課,也可以去其他課外補(bǔ)習(xí)班上課。

2.這個(gè)模式的重點(diǎn)在于Builder

固定思維,領(lǐng)導(dǎo)比員工重要。但是在這個(gè)設(shè)計(jì)模式中真正要下功夫去設(shè)計(jì)的是Builder。因?yàn)闊o(wú)論最后返回Product,還是具體執(zhí)行操作其實(shí)都是Builder在干活。

3.Director中對(duì)于Builder屬性聲明

Director中對(duì)于Builder的引用不一定是Strong,根據(jù)情況也有可能是Copy。
主要取決于項(xiàng)目需求。一般優(yōu)先考慮Copy。

4.關(guān)于<Builder>

Builder不一定是protocol也可以是抽象類,這主要取決于Builder在初始化中是否有些特殊需求。

5.和STRATEGY對(duì)比

將Aggregation改為更加緊密的Composition就是了。并且因?yàn)镾TRATEGY是行為擴(kuò)展模式,所以不需要getResult方法。
因?yàn)锽UILDER中builder是對(duì)Client開放的,所以更偏向于接口開閉原則。
STRATEGY中因?yàn)镾trategy是對(duì)Client不公開的,所以更加偏向于里氏替換原則。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容