不谈模式,只谈实现

        回到家已经很晚了,还是很习惯性的上上博客园,看看大家一天精彩的文章,以求擦出些智慧的火花,让不太灵光的脑袋能够变得聪明些。这不,Justin兄的文章让我惺松的睡眼有了亮光。Justin的文章讲的是Strategy Pattern(策略模式),内容十分生动,让人看了之后对这个模式有了清晰的认识。而我也心痒痒的,想写些读后感什么的,咔咔~~

        说句实在话,我对模式了解得很少,策略模式也是听得多,用得少(这样写是为了顺口,估计连用都没用过吧)。针对Justin在文中提到的可爱人物——Joe遇到的问题,我用IronPython(Python)写了如下的代码,我想这样的解决方案会来得更加直接吧。
        首先,我定义一个鸭子的原型:
>>>   class  Duck:
    
def  fly(self):
        
pass
    
def  quack(self):
        
pass

        接着,我再定义两种飞的行为:
>>>   def  failToFly(arg):
     
print   " I can't fly. "

>>>   def  ableToFly(arg):
     
print   " I can fly. "



         最后,我定义RubberDuck和RedHeadDuck:
>>>   class  RubberDuck(Duck):
     Duck.fly 
=  failToFly


>>>   class  RedHeadDuck(Duck):
     Duck.fly 
=  ableToFly

         好,大功告成!让我们检验一下这两种鸭子是不是真的“飞”得其所:
>>>  a  =  RubberDuck()
>>>  a.fly()
I can
' t fly.

>>>  b  =  RedHeadDuck()
>>>  b.fly()
I can fly.

        果然,该飞的能飞了,不该飞的还是乖乖地呆着。至于Quack方法的实现,我们也可以使用类似的方式,在这里就不赘述了。

你可能感兴趣的:(不谈模式,只谈实现)