描述:使用策略模式,在改变需求和扩展需求的时候,不需要改动以前的代码,只需要新增功能即可
使用场景:用不同的方式去达到相同的效果,这些方式就是策略
缺点:如果方式过多的话,会导致策略类过于冗余
//出行方式的共同接口
public interface TravelStrategy {
//出行方式
void travel();
}
//飞机出行方式
public class AirplaneStrategy implements TravelStrategy{
@Override
public void travel() {
System.out.println("搭乘飞机出行");
}
}
//火车出行方式
public class TrainStrategy implements TravelStrategy {
@Override
public void travel() {
System.out.println("坐火车出行");
}
}
//自行车出行方式
public class BicycleStrategy implements TravelStrategy {
@Override
public void travel() {
System.out.println("骑自行车出行");
}
}
//扩展轮船出行方式
public class ShipStrategy implements TravelStrategy {
@Override
public void travel() {
System.out.println("坐轮船出行");
}
}
//使用出行方式的人
public class Person {
private TravelStrategy travelStrategy;
public Person(TravelStrategy travelStrategy){
this.travelStrategy = travelStrategy;
}
public void travel(){
this.travelStrategy.travel();
}
}
//主方法
public class Main {
public static void main(String[] args){
TravelStrategy t1 = new AirplaneStrategy();
TravelStrategy t2 = new BicycleStrategy();
TravelStrategy t3 = new TrainStrategy();
TravelStrategy t4 = new ShipStrategy();
Person p = new Person(t4);
p.travel();
}
}