类图

源码
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 +" 分钟");
}
}
测试截图
