设计模式——策略模式

1. 简介

  策略模式(Strategy)是设计模式中常见的一种行为型模式,它定义一系列算法,把它们封装起来,并且可以相互替换,让这些算法独立于使用它们的调用者。也就是把变化封装起来,面向接口编程而不是面向实现编程,体现了多用组合,少用继承的设计原则。

2. UML类图

《设计模式——策略模式》

  Context类持有IStrategy的引用,IStrategy是一个抽象策略,为其它具体策略提供需要实现的方法。ConcreteStrategyA, ConcreteStrategyB, ConcreteStrategyC是具体的策略,封装了不同的算法,可以相互替换。

3. 实例

  假如你要出去旅行,那么出行的交通方式会有很多种选择,根据需要的时间、费用、舒适度可以选择不同的交通工具,相当于有多种策略可以选择。

Context类:

public class Person{
    
    private TravelStrategy strategy;
    
    public void setTravelStrategy(TravelStrategy strategy) {
        this.strategy = strategy;
    }
    
    public void travel() {
        strategy.travel();
    }
}

抽象策略:

public interface TravelStrategy {
    void travel();
}

具体策略:

public class Train implements TravelStrategy {

    public void travel() {
        System.out.println("火车价格便宜,时间稍长");
    }
}

public class Airplane implements TravelStrategy {
    
    public void travel() {
        System.out.println("飞机价格昂贵,时间短");
    }
}

public class Bus implements TravelStrategy {

    public void travel() {
        System.out.println("大巴价格便宜,时间长,舒适度低");
    }
}

测试:

public class Test {
    
    public static void main(String[] args) {
        Person person = new Person();
        //选择飞机
        person.setTravelStrategy(new Airplane());
        person.travel();
        //选择火车
        person.setTravelStrategy(new Train());
        person.travel();
    }
}
    原文作者:设计模式
    原文地址: https://segmentfault.com/a/1190000015607055
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞