## 策略设计模式
### 构成
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("用较快的策略处理%s" % data)
class SlowStrategy(Strategy):
def execute(self, data):
print("用较慢的策略处理%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)
data = "L:"
s1 = FastStrategy()
s2 = SlowStrategy()
context = Context(s1, data)
context.do_strategy()
"""切换策略"""
context.set_strategy(s2)
context.do_strategy()
```