定义: 策略模式
内容: 定义一系列的 算法, 把他们一个个 封装 起来, 并且使他们可互相替换。 本模式使得算法可 独立于 使用它的 客户而变化。
角色:
抽象策略
具体策略
上下文;
优点:
1.定义了一系列 可重用的算法和 行为;
2. 消除了 一些 条件语句;
3. 可以 提供相同 行为的 不同实现;
缺点: 客户必须了解不同的策略;
代码实例
底层代码:
from abc import ABCMeta, abstractmethod
class Strategy(metaclass= ABCMeta):
@abstractmethod
def execute(self, data):
pass
class FastStrategy(Strategy):
def execute(self, data):
print(' use fast strategy processed %s' % data)
class SlowStrategy(Strategy):
def execute(self, data):
print(' use slow strategy processed %s' % data )
class Context:
def __init__(self, strategy, data):
self.data = data
self.strategy = strategy
def set_strategy(self, strategy):
self.strategy = strategy
def do_strategy(self):
self.strategy.execute(self.data)
高层代码
# Client
data = '[...]'
s1 = FastStrategy()
s2 = SlowStrategy()
context = Context(s1, data)
context.do_strategy()
context.set_strategy(s2)
context.do_strategy()