Python Design Patterns 简明教程
Python Design Patterns - Strategy
策略模式是一种行为模式。策略模式的主要目标是使客户端能够从不同的算法或过程选择以完成指定的任务。可以在没有任何并发症的情况下为指定的任务换入和换出不同的算法。
当访问外部资源时,可以使用此模式提高灵活性。
How to implement the strategy pattern?
下面显示的程序有助于实现策略模式。
import types
class StrategyExample:
def __init__(self, func = None):
self.name = 'Strategy Example 0'
if func is not None:
self.execute = types.MethodType(func, self)
def execute(self):
print(self.name)
def execute_replacement1(self):
print(self.name + 'from execute 1')
def execute_replacement2(self):
print(self.name + 'from execute 2')
if __name__ == '__main__':
strat0 = StrategyExample()
strat1 = StrategyExample(execute_replacement1)
strat1.name = 'Strategy Example 1'
strat2 = StrategyExample(execute_replacement2)
strat2.name = 'Strategy Example 2'
strat0.execute()
strat1.execute()
strat2.execute()