创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,叫策略模式
1:为了复用而使用继承,是不完美的
问题:
维护时,会牵一发而动全身
会使不该有此功能的类也有此功能
覆盖时会很多
会使不该有此功能的类也有此功能
覆盖时会很多
2:把方法从超类中取出成接口,须要此功能的类实现接口
问题:
子类过多时,修改会增加
接口无法达到代码复用
接口无法达到代码复用
3:场景:行为在子类里不断改变,并让所有子类都有此方法并不恰当
设计原则
1:找出应用中可能需要变化的,把它们独立出来
2:针对接口编程,而不是针对实现编程
2:针对接口编程,而不是针对实现编程
解决:把不断变化的抽成接口,所有变化都实现此接口;父类中有这些接口的属性,并创建方法调用接口的方法(委托);子类中实现父类,并实例化‘接口’的子类(指每种变化)
设计原则
多使用组合,少用继承(组合:把接口(变化)放到类中,实例化每种变化赋值给属性,而不是直接实现接口)
动态设定行为:使用setter方法
策略模式:应对变化