美文网首页
行为型设计模式 - 策略模式

行为型设计模式 - 策略模式

作者: 千反田爱瑠爱好者 | 来源:发表于2018-09-09 17:21 被阅读1次
    1. 定义一系列的算法,把它们封装起来,并且使它们可相互替换;
    2. 在有多种算法相似的情况下,使用if...else复杂且难以维护;当一个系统有许多许多类,而区分它们的只是他们直接的行为时可以使用策略模式。
    3. 策略模式中,算法可以自由切换,能避免使用多重条件判断,扩展性良好;
    4. 同时存在问题:策略类会增多,且需要对外暴露。
    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()
    
    travel = TravelInterface(AirplaneStrategy())  # 坐飞机
    travel.travel()
    travel.set_strategy(TrainStrategy())  # 改开车
    travel.travel()
    

    相关文章

      网友评论

          本文标题:行为型设计模式 - 策略模式

          本文链接:https://www.haomeiwen.com/subject/zbrdgftx.html