策略模式
意义:
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
适应性:
- 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
- 一个系统需要动态地在几种算法中选择一种。
- 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。
举例:
``` import types
class People(object):
def __init__(self, func=None):
if func:
self.speak = types.MethodType(func, self)
def speak(self):
print("说中文")
def speak_english(self): print(‘说英语’)
def speak_german(self): print(‘说德语’)
if name == ‘main’: test1 = People() test2 = People(speak_english) test3 = People(speak_german) [func.speak() for func in [test1, test2, test3]]
输出结果:
说中文 说英语 说德语 ```