设计模式策略模式
Posted yadiel-cc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式策略模式相关的知识,希望对你有一定的参考价值。
策略模式
2019-11-10 17:45:09 by冲冲
1、概念
策略模式(Strategy Pattern),创建多个不同的策略对象(实现同一个策略接口)和一个使用策略(将策略对象注册为属性成员)的context对象。
本质:设计多个算法方案(它们实现同一个接口,具备可扩展性)。
解决:取代if-else结构。
2、完整代码
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 }
以上是关于设计模式策略模式的主要内容,如果未能解决你的问题,请参考以下文章