newbie_evolve's Blog

Happy coding
python设计模式之“观察者模式”
python设计模式之“装饰者模式”

python设计模式之“策略模式”

newbie_evolve posted @ 2013年8月15日 10:48 in python之年 , 734 阅读

 

class Duck():
    def __init__(self,flyBehavior):
        self.flyBehavior = flyBehavior
    def display(self):
        pass
    
class FlyBehavior():
    def __init__(self):
        pass
    def fly(self):
        pass
 
class FlyWithWings(FlyBehavior):
    def __init__(self):
        FlyBehavior.__init__(self)
    def fly(self):
        print "I can fly with wings"
class FlyNoWay(FlyBehavior):
    def __init__(self):
        FlyBehavior.__init__(self)
    def fly(self):
        print "I have no wings, I can't fly"
 
if __name__ == "__main__":
    duck = Duck(FlyWithWings())
    duck.flyBehavior.fly()
设计原则之一:少用继承,多用组合。
在这里self.flyBehavior就是运用了组合。设计模式应充分考虑变化的元素,并将其封装。策略模式定义了算法族,将它们封装起来,并可以相互替换,此模式让算法的变化独立于使用算法的客户。

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter