标签:不同的 else his print 运算 实现 rgs static style
2019-11-10 17:45:09 by冲冲
策略模式(Strategy Pattern),创建多个不同的策略对象(实现同一个策略接口)和一个使用策略(将策略对象注册为属性成员)的context对象。
本质:设计多个算法方案(它们实现同一个接口,具备可扩展性)。
解决:取代if-else结构。
1 //算法标准 2 interface Calculate { 3 public int calculate(int a, int b);//操作数,被操作数 4 } 5 6 //实现算法标准的加法 7 class Addition implements Calculate{/ 8 @Override 9 public int calculate(int a, int b) {//加数与被加数 10 return a + b;//这里我们做加法运算 11 } 12 } 13 14 //实现算法标准的减法 15 class Subtraction implements Calculate{//实现算法接口 16 @Override 17 public int calculate(int a, int b) {//减数与被减数 18 return a - b;//这里我们做减法运算 19 } 20 } 21 22 //使用算法标准实现类的context类 23 class Calculator {//计算器类 24 private Calculate calculate;//拥有某种算法策 25 public void setCalculator(Calculate calculate) {//接入算法策略 26 this.calculate = calculate; 27 } 28 public int getResult(int a, int b){ 29 return this.calculate.calculate(a, b);//返回具体策略的结果 30 } 31 } 32 33 public class Strategy { 34 public static void main(String[] args) { 35 Calculator calculator = new Calculator();//实例化计算器 36 37 calculator.setCalculator(new Addition());//接入加法实现 38 int result = calculator.getResult(1, 1);//计算 39 System.out.println(result);//得到的是加法结果2 40 41 calculator.setCalculator(new Subtraction());//接入减法实现 42 result = calculator.getResult(1, 1);//计算 43 System.out.println(result);//得到的是减法结果0 44 45 } 46 }
标签:不同的 else his print 运算 实现 rgs static style
原文地址:https://www.cnblogs.com/yadiel-cc/p/11831145.html