Feb. 06 16:15~17:00
▲Lazy Cat
Lazy Class怪味道在〈談談壞味道(7):Lazy Class & Speculative Generality〉介紹過,今天說明如何用Collapse Hierarchy移除這個怪味道。中文版的《Refactoring》將Collapse Hierarchy翻譯為摺疊繼承體系,顧名思義就是把Lazy Class怪味道所造成的不當繼承關係改成不要使用繼承。
▼看個程式範例,你設計Author類別來代表書的作者。
▼後來你發現作者可以分為專業作者與業餘作者,因此你設計了AmateurAuthor類別用來代表業餘作者,並讓它繼承原來的Author類別。
***
AmaterurAuthor除了多了一個_primaryJotTitle(主要工作抬頭)以外,並沒有有分擔多少特別責任,算是一種Lazy Class(冗員類別),可以套用Collapse Hierarchy移除這個怪味道。移除方法很簡單,就好像兩間公司合併一樣,先決定誰要成為「存續公司」,誰要成為「消滅公司」,然後把「消滅公司」的人馬移到「存續公司」即可。
在這裡我們決定保留Author消滅AmaterurAuthor,重構後結果如下:
***
友藏內心獨白:消滅肥貓。
沒有留言:
張貼留言