首页 > 代码库 > 策略模式

策略模式

昨天晚上看了<<head first 设计模式>>中文版, 看了第一个设计模式,我故意没把他看完, 只看了书中所说场景遇到的一些问题.

  书中场景要设计一个鸭子, 采用了两种方法.

1.设计一个父类, 让所有的子类都继承这个父类, 然后各子类重写父类中的一些方法, 从而使各个不同的鸭子具有不同的特性.

  但是这种方法有个问题, 例如, 父类中定义fly()方法, 但并不是所有的鸭子都会飞, 例如橡皮鸭.因此在橡皮鸭这个类中, 重写父类的fly()方法, 让这个方法什么也不做, 这样就使得橡皮鸭不会飞了.

  如果以后还有别的鸭子不会飞, 都需要重写父类中的fly()方法, 导致代码出现重复.因此这个方法并不是很好的一个方法

2.设计一个父类,父类中只定义鸭子通用的一些方法. 然后定义flyable接口. 会飞的鸭子都实现该接口.

  这样设计以后, 出现了更多的代码重复. 因为大部分鸭子都是会飞的, 只有少部分鸭子不会飞. 这样很多鸭子都得实现这个接口, 出现更多的重复工作.如何设计才能避免代码重复, 并且具有很大的灵活性呢?

....

 

策略模式