为什么建设银行的网站打不开,小程序平台登录,响应式网站建设公司‘,自适应网站的代表文章目录 使用策略模式彻底消除if-else1. 场景描述2. if-else方式3. 策略模式 使用策略模式彻底消除if-else 如果一个对象有很多的行为#xff0c;如果不用恰当的模式#xff0c;这些行为就只好使用多重的条件选择语句来实现#xff0c;这样会显得代码逻辑很臃肿#xff0c… 文章目录 使用策略模式彻底消除if-else1. 场景描述2. if-else方式3. 策略模式 使用策略模式彻底消除if-else 如果一个对象有很多的行为如果不用恰当的模式这些行为就只好使用多重的条件选择语句来实现这样会显得代码逻辑很臃肿那么有没有方式去消除这种逻辑呢答案当然是有那就是使用策略模式 1. 场景描述
接下来我们演示一下根据传入的不同参数执行不同的计算功能- 如果传入的是PLUS,执行数据ab计算- 如果传入的是MINUS,执行数据a-b计算- 如果传入的是MULTIPLY,执行数据a*b计算- 否则执行数据a/b计算。2. if-else方式
public class StrategyDemo {public static void main(String[] args) {Integer result count(3, 5, MULTIPLY);System.out.println(result);}public static Integer count(Integer a, Integer b, String opt) {if (PLUS.equals(opt)) {return a b;} else if (MINUS.equals(opt)){return a - b;} else if (MULTIPLY.equals(opt)) {return a * b;} else {return a / b;}}
}3. 策略模式 定义计算接口 public interface ArithmeticOperation {/*** 计算** param a 待计算值* param b 待计算值* return 计算结果*/int calculate(int a, int b);
}定义枚举类并实现计算接口 public enum ArithmeticEnum implements ArithmeticOperation{/*** 加*/PLUS {Overridepublic int calculate(int a, int b) {return a b;}},/*** 减*/MINUS {Overridepublic int calculate(int a, int b) {return a - b;}},/*** 乘*/MULTIPLY {Overridepublic int calculate(int a, int b) {return a * b;}},/*** 除*/DIVIDE {Overridepublic int calculate(int a, int b) {return a / b;}};}使用 public class StrategyDemo {public static void main(String[] args) {Integer result count(3, 5, MULTIPLY);System.out.println(result);}public static Integer count(Integer a, Integer b, String opt) {ArithmeticEnum arithmeticEnum ArithmeticEnum.valueOf(opt);return arithmeticEnum.calculate(a, b);}
}测试运行结果