最近刚开始唸设计模式
但有些地方不确定理解得对不对
希望有大大能帮忙解答
刚唸了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)不就好了?
如果有不清楚的地方 之后会再修改
谢谢~