策略模式
-
内容
定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换,(算法可独立使用于他的客户而变化)
-
角色
- 抽象策略
- 具体策略
- 上下文
-
优点
- 定义了一系列可重用的算法或者
- 消除了一些条件语句
- 相同行为的不同实现
-
缺点
- 客户必须了解不同的策略
-
代码实例
from abc import ABCMeta,abstractmethod class Strategy(object): """docstring for Strategy""" @abstractmethod def execute(self): pass class FastStrategy(Strategy): """docstring for FastStrategy""" def execute(self): print('使用较快的策略') class SlowStrategy(object): """docstring for SlowStrategy""" def execute(self): print('使用较慢的策略') class Content(): """docstring for Content""" def __init__(self, data, strategy): data = data self.strategy = strategy def set_strategy(self,strategy): self.strategy = strategy def do_strategy(self): self.strategy.execute() data = [{'user':'小红','age':'12','gender':'man'}] s1 = FastStrategy() s2 = SlowStrategy() # content1 = Content(data=data,strategy=s1) content2 = Content(data=data,strategy=s2) content2.do_strategy()