使用键值映射优化代码的逻辑

使用键值映射优化代码的逻辑

一、 概述:

本文主要以利用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、定义方式如图所示;


使用键值映射优化代码的逻辑

ParamMapping


分享到:


相關文章: