最近剛開始唸設計模式
但有些地方不確定理解得對不對
希望有大大能幫忙解答
剛唸了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)不就好了?
如果有不清楚的地方 之後會再修改
謝謝~