概述
本文介绍一种通过循环判断来替换 if else 的一种方法,并介绍该方法的关键点,以及带来的收益。最后通过具体的案例来应用这种方法。
关键点
对象的创建与封装
对象在什么时候创建,什么时候封装,用什么容器进行封装
对象的调用
根据什么条件去调用封装好的对象的方法
- 将
if else
的判断逻辑通过java.util.function.Function
进行封装,参数对外暴露,并返回 boolean 类型,这个代表了 if 中的 表达式, - 通过 KeyValueVo 实体将 Function 和 else 中要返回的内容封装起来
- 将所有 KeyValueVo 存储到集合中,通过遍历集合来找到合适的返回内容
带来的好处
- 利用
java.util.function.Function
来对业务代码进行解耦 - 提高代码的可扩展性和可维护性
- 如果集合 size 比较大的话,可以通过多线程来提高执行的速度
现状
1 | public Integer getTypeByUser(final String user) { |
改进后
1 | private static final List<KeyValueVo<Function<String, Boolean>, Integer>> TYPE_LIST = new ArrayList<KeyValueVo<Function<String, Boolean>, Integer>>() {{ |
- 其中的 Function 为:
java.util.function.Function
- 其中的 KeyValueVo 定义如下
1 | import lombok.AllArgsConstructor; |