设计23式—策略
来源:互联网 发布:史蒂芬库里 知乎 编辑:程序博客网 时间:2024/05/29 04:55
/* * 策略模式 * 优点 * 算法可以自由切换 * 避免使用多重条件判断 * 扩展性良好 */public class MyMain {public static void main(String[] args) {// 两个参数int a = 8, b = 4;// 加载加法策略System.out.println("8+4=" + new CalculatorA(new Addition()).Action(a, b));// 加载减法策略System.out.println("8-4=" + new CalculatorA(new Subtraction()).Action(a, b));// 加载乘法策略System.out.println("8*4=" + new CalculatorA(new Multiplication()).Action(a, b));// 加载除法策略System.out.println("8/4=" + new CalculatorA(new Division()).Action(a, b));// 策略枚举System.out.print("计算4+3*5+9-2/2=");System.out.println(Calculator.Addition.Operation(4,Calculator.Addition.Operation(Calculator.Multiplication.Operation(3, 5),Calculator.Subtraction.Operation(9, Calculator.Division.Operation(2, 2)))));}}// 普通策略// 定义一个抽象运算策略abstract interface IOperationA {// 抽象的运算法则abstract public int Action(int a, int b);}// 具体的运算环境class CalculatorA {// 运算策略private IOperationA operationA;public CalculatorA(IOperationA operationA) {this.operationA = operationA;}// 使用运算public int Action(int a, int b) {return operationA.Action(a, b);}}// 具体的加法运算策略class Addition implements IOperationA {@Overridepublic int Action(int a, int b) {return a + b;}}// 具体的减法运算策略class Subtraction implements IOperationA {@Overridepublic int Action(int a, int b) {return a - b;}}// 具体的乘法运算策略class Multiplication implements IOperationA {@Overridepublic int Action(int a, int b) {return a * b;}}// 具体的除法运算策略class Division implements IOperationA {@Overridepublic int Action(int a, int b) {return a / b;}}// 扩展// 策略枚举// 定义一个计算的策略枚举enum Calculator {// 加法Addition("+") {@Overridepublic int Operation(int a, int b) {return a + b;}},// 减法Subtraction("-") {@Overridepublic int Operation(int a, int b) {return a - b;}},// 乘法Multiplication("*") {@Overridepublic int Operation(int a, int b) {return a * b;}},// 除法Division("/") {@Overridepublic int Operation(int a, int b) {return a / b;}};String value = "";private Calculator(String value) {this.value = value;}public String getValue() {return value;}abstract public int Operation(int a, int b);}
阅读全文
0 0
- 设计23式—策略
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- Java设计模式—策略
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式——策略设计模式
- 23种设计模式之——策略模式
- 设计策略
- 23种设计模式02---策略模式
- 2017.11.3 N盘M柱汉诺塔问题通解 DP 解题报告
- QTableWidgetItem
- Java的三种代理模式
- LateUpdate以及Update的区别
- Java代码优化必看
- 设计23式—策略
- makefile的杂七杂八
- studio 更新到3.0后报错问题及解决方案
- 2.判断是否是制单人
- 2012年系统架构师考试题详解
- TOP100summit:【分享实录-美团点评】 业务快速升级发展背后的系统架构演进
- 什么是跨域?怎么解决跨域问题?
- BZOJ1798: [Ahoi2009]Seq 维护序列seq
- 查询上周同天的指标数据(查小时表)