描述:使用策略模式,在改变需求和扩展需求的时候,不需要改动以前的代码,只需要新增功能即可
使用场景:用不同的方式去达到相同的效果,这些方式就是策略
缺点:如果方式过多的话,会导致策略类过于冗余
//出行方式的共同接口
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(); }}