设计模式策略模式

类图

 

源码

TravelStrategy.java
package com.strategy;

public abstract class TravelStrategy {
    public abstract int costTime(int km);
}

AirPlaneTravelStrategy.java
package com.strategy;

public class AirPlaneTravelStrategy extends TravelStrategy{
    @Override
    public int costTime(int km) {
        return km * 1;
    }
}



CarTravelStrategy.java
package com.strategy;

public class CarTravelStrategy extends TravelStrategy{
    @Override
    public int costTime(int km) {
        return km * 1;
    }

}

TravelHappy.java
package com.strategy;

public class TravelHappy {
    private TravelStrategy strategy;

    public TravelHappy(TravelStrategy strategy){
        this.strategy = strategy;
    }

    public int travelCostTime(int km){
        return strategy.costTime(km);
    }
}

Client.java
package com.strategy;

public class Client {
    public static void main(String args[]){
        TravelStrategy strategy;
        TravelHappy th;
        //这里的策略可以使用配置文件进行读取
        strategy = new AirPlaneTravelStrategy();
        th = new TravelHappy(strategy);
        System.out.println("从北京到上海 1000公里");
        int costTime;
        costTime = th.travelCostTime(1000);
        System.out.println("-------costTime-------------" + costTime +" 分钟");

        System.out.println("--------------------");
        //这里的策略可以使用配置文件进行读取
        strategy = new CarTravelStrategy();
        th = new TravelHappy(strategy);
        costTime = th.travelCostTime(1000);
        System.out.println("-------costTime-------------" + costTime +" 分钟");
    }
}

测试截图

 

原文地址:https://www.cnblogs.com/lx06/p/15688609.html