iOS設計模式-生成器模式 后記

UML


BUILDER UML

時序圖


BUILDER Sequence Chart

BUILDER設計模式總共有三個四個成員,Director、Builder、ConcreteBuilder、Result。

1.為什么Director和Builder是Aggregation關系?

可以這么理解:
1)只有在學校和學生兩者共同協作的情況下才能產出“畢業學生”。
2)學校沒了學生無法存活。所以是學校聚合學生。
3)學生沒了學校依然可以存活。所以學生被學校聚合。
4)學校和學生并不唯一綁定。并不是說只有小明去了太陽小學才能畢業,也不是太陽小學只能教小明一個人。不同的學生和不同的學校之間會產生不同成績的“畢業學生”。
5)一個學校可以有多中教育方法(construct)
6)小明不僅可以在太陽小學上課,也可以去其他課外補習班上課。

2.這個模式的重點在于Builder

固定思維,領導比員工重要。但是在這個設計模式中真正要下功夫去設計的是Builder。因為無論最后返回Product,還是具體執行操作其實都是Builder在干活。

3.Director中對于Builder屬性聲明

Director中對于Builder的引用不一定是Strong,根據情況也有可能是Copy。
主要取決于項目需求。一般優先考慮Copy。

4.關于<Builder>

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

5.和STRATEGY對比

將Aggregation改為更加緊密的Composition就是了。并且因為STRATEGY是行為擴展模式,所以不需要getResult方法。
因為BUILDER中builder是對Client開放的,所以更偏向于接口開閉原則。
STRATEGY中因為Strategy是對Client不公開的,所以更加偏向于里氏替換原則。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容