干掉if-else,让你的代码更优雅!
2019-08-06 本文已影响551人
cd4bd3aa39ec
01 臃肿示例
1.1 if-else

1.2 case-switch

02 重构
2.1 工厂方式重构
(1)抽象接口 Operation.java

(2)加法实现 Addition.java

(3)减法实现 Subtraction.java

(4)乘法实现 Multiplication.java

(5)除法实现 Division.java

(6)求余实现 Modulo.java

(7)工厂类 OperatorFactory.java

(8)使用示例

2.2 枚举方式重构
(1)枚举实现Operator.java

(2)封装Operator到Calculator.java

(3)使用示例

2.3 命令模式
(1)抽象的接口

(2)实现类

(3)包装

(4)测试demo

2.4 规则引擎重构
(1)抽象规则

(2)实现规则AddRule.java

其中:返回结果

(3)表达式

(4)规则引擎RuleEngine.java

(5)测试demo

03 小结
为了更好的代码重用性,可读性,可靠性,可维护性,我们会尝试将IF/ELSE或者case-switch进行改造,使用工厂方法,枚举方法,命令模式,规则引擎方式不同方法进行尝试,最后使用设计模式的六大原则对代码进行评估。
最后:一波读者小福利~
读到这的朋友还可以免费领取一份收集的Java面试资料和Java核心知识体系文档及更多Java进阶知识笔记和视频资料。
欢迎做Java的工程师朋友们加入合作Q群:【 java架构技术交流,578486082 】
群内提供免费的Java架构学习资料(有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis、Netty、Redis、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多个知识点的架构资料)