策略模式是行为型设计模式。算法
其用意是针对一组算法,将每个算法封装到具备共同接口的独立的类中,从而使得它们能够相互替换。设计模式
策略模式使得算法能够在不影响到客户端的状况下发生变化。并发
下面是基本结构:框架
三类角色:分布式
Strategy
的引用。案例实现:ide
定义一族算法,能够实现对两个数的操做,例如
+、-、*、/
等。
实现代码总体框架图:高并发
具体代码实现:测试
Context
类:this
/** * Context 是一个使用了某种策略的类。 实现了 Strategy 接口的实体策略类 */ public class Context { private Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public int executeStrategy(int num1, int num2){ return strategy.doOperation(num1, num2); } } Strategy接口: /**策略的公共接口*/ public interface Strategy { int doOperation(int num1, int num2); }
三种对应的算法实现:spa
/** 算法1: 实现加法 */ public class OperationAdd implements Strategy { @Override public int doOperation(int num1, int num2) { return num1 + num2; } } /** 算法2:实现减法 */ public class OperationSubstract implements Strategy{ @Override public int doOperation(int num1, int num2) { return num1 - num2; } } /** 算法3: 实现乘法 */ public class OperationMultiply implements Strategy{ @Override public int doOperation(int num1, int num2) { return num1 * num2; } }
测试类:
public class MyTest { public static void main(String[] args) { Context context = new Context(new OperationAdd()); System.out.println("10 + 5 = " + context.executeStrategy(10, 5)); context = new Context(new OperationSubstract()); System.out.println("10 - 5 = " + context.executeStrategy(10, 5)); context = new Context(new OperationMultiply()); System.out.println("10 * 5 = " + context.executeStrategy(10, 5)); } }
程序输出:
10 + 5 = 15 10 - 5 = 5 10 * 5 = 50
免费Java高级资料须要本身领取,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G。
传送门: https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q