Python设计模式(十四)【策略模式】

时间:2022-04-19 22:01:11

生活充满了选择,而生活的态度就是一切。

"""
策略模式
"""

import types

class StrategyExample:
def __init__(self, func=None):
self.name = '策略例子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 + ' 从执行1')


def execute_replacement2(self):
print(self.name + ' 从执行2')


if __name__ == '__main__':
strat0 = StrategyExample()

strat1 = StrategyExample(execute_replacement1)
strat1.name = '策略例子1'

strat2 = StrategyExample(execute_replacement2)
strat2.name = '策略例子2'

strat0.execute()
strat1.execute()
strat2.execute()

运行结果如图:

Python设计模式(十四)【策略模式】