使用鍵值對映最佳化程式碼的邏輯

使用鍵值對映最佳化程式碼的邏輯

一、 概述:

本文主要以利用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