1. 根据需求,通过实现模板接口对象,将其注入实现策略模式
class TravelStrategy(object):
'''
出行策略
'''
def travelAlgorithm(self):
pass
class AirplaneStrategy(TravelStrategy):
def travelAlgorithm(self):
print("坐飞机出行....")
class TrainStrategy(TravelStrategy):
def travelAlgorithm(self):
print("坐高铁出行....")
class CarStrategy(TravelStrategy):
def travelAlgorithm(self):
print("自驾出行....")
class BicycleStrategy(TravelStrategy):
def travelAlgorithm(self):
print("骑车出行....")
class TravelInterface(object):
def __init__(self,travel_strategy):
self.travel_strategy = travel_strategy
def set_strategy(self,travel_strategy):
self.travel_strategy = travel_strategy
def travel(self):
return self.travel_strategy.travelAlgorithm()
if __name__ == '__main__':
travel = TravelInterface(AirplaneStrategy())
travel.travel()
travel.set_strategy(CarStrategy())
travel.travel()
2.根据需求外链接口,实现策略模式
import types
class Strategy:
def __init__(self, func=None):
if func is not None:
self.execute = types.MethodType(func, self)
def execute(self):
pass
def strategy_func1(self):
print('func1')
def strategy_func2(self):
print('func2')
if __name__ == '__main__':
s = Strategy(func=strategy_func1)
s.execute()