设有一基类Duck, 因为要添加新功能所以可能要修改基类, 其中可能遇到的问题有:
1. 代码在子类中重复.
2. 很难知道所有子类的全部行为.
3. 改变会牵一发而动全身, 造成其他子类不必要的改变.
解决方法为:
1. 找出应用中可能要变化之处, 把它们独立出来
2. 将可能变化的行为设计为接口, 而不是在类中实现它们
3. 多使用类似接口的组合而不是继承
示例:
设有一基类Duck, 因为要添加新功能所以可能要修改基类, 其中可能遇到的问题有:
1. 代码在子类中重复.
2. 很难知道所有子类的全部行为.
3. 改变会牵一发而动全身, 造成其他子类不必要的改变.
解决方法为:
1. 找出应用中可能要变化之处, 把它们独立出来
2. 将可能变化的行为设计为接口, 而不是在类中实现它们
3. 多使用类似接口的组合而不是继承
示例: