@happyfans
2015-02-18T14:16:09.000000Z
字数 438
阅读 1328
继承
java
继承是代码重用的利器,但继承并不总是最好的工具。
复合优先于继承,多用组合,少用继承
在类中增加一个私有的域,引用另一个已有类的实例,通过调用引用实例的方法从而获得新的功能,这种设计被称为组合(复合)
策略模式中的设计原则
- 找出应用程序中需要变化的部分,把他们独立出来,不要和那些不需要变化的代码混在一起
- 面向接口编程,而不是面向实现编程
- 多用组合,少用继承
策略模式的实现
- 通过分离变化得出的策略接口(Strategy)
- 为策略接口(Strategy)提供实现类
- 客户程序中有一个Strategy
- 在客户程序中选择/组装Strategy实现类
策略模式的优缺点
优点
- 使用组合,使得架构更加灵活
- 富有弹性,可以较好的应对变化(开闭原则)
- 更好的代码复用性(相对于继承)
- 消除大量的条件语句
缺点
- 客户代码需要了解每个策略实现的细节
- 增加了对象的数目,给维护带来了困难
策略模式的使用场景
- 许多场景的类仅仅是行为差异
- 运行时选取不同的算法变体
- 通过条件语句在多个分支中选取
###行业案例:策略模式使得应用更有弹性