標籤:str method imp 平滑 ace bubuko object pytho 模式
1. 定義
對一系列演算法進行封裝,為所有演算法定義一個抽象的演算法介面,可以平滑的進行演算法切換
2. 策略模式的UML圖
3.代碼實現
#!/usr/bin/env python#! _*_ coding:UTF-8 _*_from abc import ABCMeta, abstractmethodclass Context(object): def setStrategy(self, strategy): self.__strategy = strategy def operation(self): self.__strategy.algorithmInterface()class Strategy(object): @abstractmethod def algorithmInterface(self): passclass ConcreteStrategyA(Strategy): def algorithmInterface(self): print "strategy A"class ConcreteStrategyB(Strategy): def algorithmInterface(self): print "strategy B"if __name__ == "__main__": context = Context() concreteStrategyA = ConcreteStrategyA() concreteStrategyB = ConcreteStrategyB() context.setStrategy(concreteStrategyA) context.operation() context.setStrategy(concreteStrategyB) context.operation()
結果:
/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/day09_strategy/strategy_test.pystrategy Astrategy BProcess finished with exit code 0
python設計模式第九天【策略模式】