关于Head First设计模式中的策略模式的困惑
大家好,最近在jdon学习了一段时间,买了本关于模式的书来学习,<Head first 设计模式>中的第一个模式策略模式(Strategy),其中有三个设计原则:
1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起
2、针对接口编程,而不是针对实现编程
3、多用组合,少用继承。
策略模式定义了算法族,分别封装起来,让它们之间可以互想替换,此模式让算法的变化独立于使用算法的客户。
它举了一个SimuDuck的列子,使用的是策略模式,如下图
http://www.jdon.com/jivejdon/imageShow.jsp?id=0
其实我有点困惑,根据原则1 2 3为什么不把行为再拿出来,抽像一个更高级别的接口呢,而是把飞行行为和呱呱叫行为单独出来呢?假如鸭子要求还有其它行为,那不是又要修改Duck类吗?我觉得因该抽像出一个Behavoir接口(只是一个像征意义的类型,没有实体),飞行行为和呱呱叫行为因该实现行为接口,这样有新的行为时,就不需修改Duck。请banq指点一下,这样可以吗
[该贴被freesea于2009-03-23 20:38修改过]