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不公開的,所以更加偏向于里氏替換原則。