策略模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了策略模式相关的知识,希望对你有一定的参考价值。
昨天晚上看了<<head first 设计模式>>中文版, 看了第一个设计模式,我故意没把他看完, 只看了书中所说场景遇到的一些问题.
书中场景要设计一个鸭子, 采用了两种方法.
1.设计一个父类, 让所有的子类都继承这个父类, 然后各子类重写父类中的一些方法, 从而使各个不同的鸭子具有不同的特性.
但是这种方法有个问题, 例如, 父类中定义fly()方法, 但并不是所有的鸭子都会飞, 例如橡皮鸭.因此在橡皮鸭这个类中, 重写父类的fly()方法, 让这个方法什么也不做, 这样就使得橡皮鸭不会飞了.
如果以后还有别的鸭子不会飞, 都需要重写父类中的fly()方法, 导致代码出现重复.因此这个方法并不是很好的一个方法
2.设计一个父类,父类中只定义鸭子通用的一些方法. 然后定义flyable接口. 会飞的鸭子都实现该接口.
这样设计以后, 出现了更多的代码重复. 因为大部分鸭子都是会飞的, 只有少部分鸭子不会飞. 这样很多鸭子都得实现这个接口, 出现更多的重复工作.如何设计才能避免代码重复, 并且具有很大的灵活性呢?
....
以上是关于策略模式的主要内容,如果未能解决你的问题,请参考以下文章