【设计模式】策略模式详解

策略模式简介

当我们因不同的外部条件需要对某个对象执行不同的算法时,我们就可以把具体的算法实现从具体的业务处理中独立出来,把它们实现成为单独的算法类,从而形成一系列的算法,并让这些算法可以相互替换,这就是策略模式。

策略模式的类图

  • Strategy:策略接口,定义了Context使用的接口
  • ConcreteStrategy:具体的策略实现
  • Context:上下文,负责和具体的策略类交互

策略模式的代码示例

Strategy接口:

public interface Strategy {
    void algorithmInterface();
}

ConcreteStrategyA:

public class ConcreteStrategyA implements Strategy{
    @Override
    public void algorithmInterface() {
        System.out.println("Strategy A!");
    }
}

ConcreteStrategyB:

public class ConcreteStrategyB implements Strategy{
    @Override
    public void algorithmInterface() {
        System.out.println("Strategy B!");
    }
}

ConcreteStrategyC:

public class ConcreteStrategyC implements Strategy{
    @Override
    public void algorithmInterface() {
        System.out.println("Strategy C!");
    }
}

Context:

public class Context {
    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public void excute() {
        strategy.algorithmInterface();
    }
}

Main:

public class Main {
    public static void main(String[] args) {
        Strategy strategy = new ConcreteStrategyA();
        Context context = new Context(strategy);
        context.excute();
    }
}

预计输出:

Strategy A!

Process finished with exit code 0

策略模式的应用场景

策略模式能够做到动态切换算法,且符合开闭原则,当对某个对象的可以实行一系列平级的算法处理时,就可以考虑策略模式。

参考文献

【1】《研磨设计模式》陈臣等著,清华大学出版社。


每日学习笔记,写于2020-05-13 星期三

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。