说句实在话,我对模式了解得很少,策略模式也是听得多,用得少(这样写是为了顺口,估计连用都没用过吧)。针对Justin在文中提到的可爱人物——Joe遇到的问题,我用IronPython(Python)写了如下的代码,我想这样的解决方案会来得更加直接吧。
首先,我定义一个鸭子的原型:
接着,我再定义两种飞的行为:
最后,我定义RubberDuck和RedHeadDuck:
好,大功告成!让我们检验一下这两种鸭子是不是真的“飞”得其所:
果然,该飞的能飞了,不该飞的还是乖乖地呆着。至于Quack方法的实现,我们也可以使用类似的方式,在这里就不赘述了。