使用键值映射优化代码的逻辑
一、 概述:
本文主要以利用Map的键值映射特性进行配置相关逻辑为主线逐步展开说明,针对于代码中大段的if...else条件判断进行优化,提高代码的效率和可读性。另外对此特性进行深度思考后发现,对象转换时通过Map进行对多个对象的实例进行合并或分解,可以提高代码的效率,压缩代码的体积。
综上所述得出结论:在代码优化时,除了使用设计模式外,Map的使用也是非常重要的优化手段之一。
二、 Map键值映射特性描述:
Map提供了一个更通用的元素存储方法。Map集合类是用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。
三、 条件判断优化场景分析:
1、 根据判断条件给相关变量赋值:
a) 优化方法:将条件配置为Map的键(key),将需要修改的值配置为Map的值(value);
b) 原始代码:
c) 优化后代码:
2、 根据判断条件调用方法:
a) 调用不同对象的同名方法,且方法入参的类型和数量一致,返回值的类型也一致:
i. 优化方法:
通过工厂模式优化对象初始化过程,利用Map的键值映射特性维护判断条件与对象的关系;
ii. 原始代码:
iii. 优化后代码:
b) 调用同一个对象的不同名称方法,且方法入参的类型和数量一致,返回值的类型也一致:
i. 优化方法:
通过工厂模式优化对象初始化过程,利用Map的键值映射特性维护判断条件与对象的关系;通过策略模式将所有不同名称的方法统一为一个同名称方法;
ii. 经典案例:
Java实现计算器基本功能的案例中,对于计算器按键的监听处理逻辑;
c) 调用不同对象的不同名称方法,且方法入参的类型和数量一致,返回值的类型也一致:
i. 优化方法:
利用Map的键值映射特性维护判断条件与对象的关系,同时利用该特性维护判断条件与调用方法的关系,通过Java的反射机制进行方法调用;
ii. 调用方式:
java.lang..getDeclaredMethod( name, ... parameterTypes);
3、 对多个对象的实例进行合并或分解:
a) 优化方法:
MapToBean(Map2Bean)与BeanToMap(Bean2Map)的转换过程;
b) 实现方法:
继承commons-beanutils.jar中的
org.apache.commons.beanutils.BeanUtils类,实现不同数据类型或自定义对象与Map的转换过程;
c) 说明:
BeanUtils主要是封装了java反射(reflection)和自省(introspection)API,来对JavaBean进行操作。
四、 注意事项:
1、应尽量将Map的键值映射单独在一个统一的类中进行维护;
2、配置类应使用final进行修饰,用以阻止继承;
3、定义方式如图所示;