设计模式之策略模式

描述:使用策略模式,在改变需求和扩展需求的时候,不需要改动以前的代码,只需要新增功能即可

使用场景:用不同的方式去达到相同的效果,这些方式就是策略

缺点:如果方式过多的话,会导致策略类过于冗余

//出行方式的共同接口

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();
    }
}

posted @ 2016-06-20 16:01  北极星的眼泪520  阅读(82)  评论(0编辑  收藏  举报