设计模式-策略

一,策略模式详解

  • 概念
    定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换,本模式使得算法可独立使用它的客户变化
  • 使用场景
    一个类中定义了多种行为,并且这些行为在这个类的方法中以多个条件语句的形式出现,那么可以使用策略模式避免在类中使用大量的条件语句
  • UML
image.png
  • 代码示例

public interface AbstractStrategy {
    int calculatePrice(int km);
}
public class StrategyContext {
    private AbstractStrategy abstractStrategy;

    public void setAbstractStrategy(AbstractStrategy abstractStrategy) {
        this.abstractStrategy = abstractStrategy;
    }
    public int calclatePrice(int km){
        return abstractStrategy.calculatePrice(km);
    }
}

public class BusStrategy implements AbstractStrategy{
    @Override
    public int calculatePrice(int km) {
        return 100;
    }
}

public class BusStrategy implements AbstractStrategy{
    @Override
    public int calculatePrice(int km) {
        return 100;
    }
}

public class TaxiStrategy implements AbstractStrategy{
    @Override
    public int calculatePrice(int km) {
        return 1000;
    }
}

StrategyContext context=new StrategyContext();
        context.setAbstractStrategy(new BusStrategy());//传入需要用的算法功能
        context.calclatePrice(20);
  • 优点
    (1)上下文(Context)和具体策略是松耦合关系 因为 context是与一个抽象类或者是一个接口进行关联
    (2)满足开闭原则

二,在android中的实际运用

  • Volley中对于HttpStack的设计用到的就是策略模式
    image.png

你可能感兴趣的:(设计模式-策略)