Python设计模式 策略


策略模式是一种行为模式。策略模式的主要目标是使客户能够从不同的算法或程序中进行选择来完成指定的任务。不同的算法可以在没有任何复杂性的情况下换入和换出上述任务。

此模式可用于在访问外部资源时提高灵活性。

如何实施策略模式?


下面显示的程序有助于实施策略模式。

import types

class Strategy例子:
    def __init__(self, func = None):
        self.name = 'Strategy 例子 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 = Strategy例子()
    strat1 = Strategy例子(execute_replacement1)
    strat1.name = 'Strategy 例子 1'
    strat2 = Strategy例子(execute_replacement2)
    strat2.name = 'Strategy 例子 2'
    strat0.execute()
    strat1.execute()
    strat2.execute()

上述程序产生如下输出:

Strategy Pattern

解释

它提供了执行输出的函数的策略列表。这种行为模式的主要焦点是行为。