[問題] Decorator Pattern的問題

作者: SFMAndroid (安卓發送)   2018-07-28 23:45:17
最近剛開始唸設計模式
但有些地方不確定理解得對不對
希望有大大能幫忙解答
剛唸了strategy, observor, decorator三個設計模式
但是對於「封裝變動」的部分還是不太懂
只知道主要概念是把「行為」獨立出來
實作上是program to interface/abstract class
讓Component可以實作需要的部分
目前有以下三個問題
1. 但是需要「封裝」的原因有哪些?
1. 直接繼承的話可能會需要實作不合理的方法
ex. Duck介面有fly()但橡膠鴨不會飛
2. 沒有彈性
有實際的例子嗎?
3. 其他好處
2. 如果「封裝」代表要program to interface,那decorator不是打臉了嗎?
書上說雖然decorator繼承自abstract class
但是並沒有使用他的方法
所以沒有違反「封裝變動的部分」原則
那strategy pattern把「行為」獨立出來的意義是...?
3. 既然decorator都繼承了abstract class
那為何還需要decorator這個介面?
直接讓decorator的實例繼承superclass(Component)不就好了?
如果有不清楚的地方 之後會再修改
謝謝~
作者: fayhong (恰似飛鴻踏雪泥)   2018-07-30 09:51:00
你讀的是哪一本呢?
作者: SFMAndroid (安卓發送)   2018-07-30 20:28:00
Head First設計模式
作者: jakarta99   2018-07-31 16:12:00
1. 設計模式是內功,有需要的時候就會需要2.Strategy 主要是你也不知道會有哪些物件可以操作,乾脆提供一個你可以呼叫的 interface 給其他人實作.3. Decorator 通常是原始開發者沒有想到的情況,以不破壞原本的創作, 繼承後去產生新的 interface.

Links booklink

Contact Us: admin [ a t ] ucptt.com