设计模式 - 策略模式
Posted lankerenf3039
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 - 策略模式相关的知识,希望对你有一定的参考价值。
策略模式
做一件事,采用不同的策略。
context上下文
public class Context { Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } //上下文接口 public void contextInterface() { strategy.algorithmInterface(); } }
Strategy抽象策略
public abstract class Strategy { //算法方法 public abstract void algorithmInterface(); }
ConcreteStrategy具体策略实现
public class ConcreteStrategyA extends Strategy { @Override public void algorithmInterface() { System.out.println("算法A实现"); } }
Client客户端(用同一个上下文加载不同的策略,得到不同的策略实现结果)
public class Client { public static void main(String[] args) { Context context; context = new Context(new ConcreteStrategyA()); context.contextInterface(); context = new Context(new ConcreteStrategyB()); context.contextInterface(); context = new Context(new ConcreteStrategyC()); context.contextInterface(); } }
优点:避免if/else,添加策略只需添加新的策略实现类,策略可以自由切换,拓展性好。
缺点:所有策略实现类都需要对外(客户端)暴露。
和工厂模式的区别
工厂模式侧重与类的创建,策略模式侧重于策略的执行结果。
------
参考:
https://www.cnblogs.com/adamjwh/p/11011095.html
以上是关于设计模式 - 策略模式的主要内容,如果未能解决你的问题,请参考以下文章