## 策略設計模式
### 構成
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()
```