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就是运用了组合。设计模式应充分考虑变化的元素,并将其封装。策略模式定义了算法族,将它们封装起来,并可以相互替换,此模式让算法的变化独立于使用算法的客户。