美文网首页
策略模式

策略模式

作者: CodeYang | 来源:发表于2021-10-09 13:29 被阅读0次

策略模式

百度百科:策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。

组成

  • 抽象策略角色: 策略类,通常由一个接口或者抽象类实现。
  • 具体策略角色:包装了相关的算法和行为。
  • 环境角色:持有一个策略类的引用,最终给客户端调用

示例代码

/**
 * 策略模式
 */
public class Test implements Cloneable {
    public static void main(String[] args) throws CloneNotSupportedException  {
        Context context1 = new Context(new AirWay());
        context1.travel(100);
        Context context2 = new Context(new TrainWay());
        context2.travel(100);
        Context context3 = new Context(new BicycleWay());
        context3.travel(100);
    }
}

class Context{
    private TravelStrategy travelStrategy;

    public Context(TravelStrategy travelStrategy) {
        this.travelStrategy = travelStrategy;
    }

    public void travel(int money){
        travelStrategy.travelWay(money);
    }
}

/**
 * 出行旅游 策略
 */
interface TravelStrategy{
    void travelWay(int money);
}

class AirWay implements TravelStrategy{
    @Override
    public void travelWay(int money) {
        System.out.println("乘坐飞机旅游,需要花费:"+(money*2));
    }
}

class TrainWay implements TravelStrategy{
    @Override
    public void travelWay(int money) {
        System.out.println("乘坐火车旅游,需要花费:"+money);
    }
}

class BicycleWay implements TravelStrategy{
    @Override
    public void travelWay(int money) {
        System.out.println("骑自行车旅游,需要花费:"+(money/2));
    }
}

运行结果

image.png

相关文章

网友评论

      本文标题:策略模式

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