4.15_strategy_行为型模式:策略模式

墨春

关注

阅读 63

2022-02-16

from abc import ABCMeta, abstractmethod


class Strategy(metaclass=ABCMeta):
    """抽象策略 (Strategy)"""

    @abstractmethod
    def execute(self, data):
        pass


class FastStrategy(Strategy):
    def execute(self, data):
        print(f'用较快的策略处理 {data}')


class SlowStrategy(Strategy):
    def execute(self, data):
        print(f'用较慢的策略处理 {data}')


class Context(object):
    def __init__(self, strategy, data):
        self.strategy = strategy
        self.data = data

    def set_strategy(self, strategy):
        self.strategy = strategy

    def do_strategy(self):
        self.strategy.execute(self.data)


# --- Client ---
data = '[...]'
s = FastStrategy()
c = Context(s, data)
c.do_strategy()

 

精彩评论(0)

0 0 举报