需求:
数据采集,同一批采集的数据需要根据情况插入不同的数据表中。
设计思路:
创建不同数据表的数据对象,并放入Map中,数据表名称作为Map的key值;
通过判断Map中是否已存在指定数据表名称的数据对象,选择返回指定数据表名称的数据对象,还是新创建数据表对象返回,并放入Map中。
这样,利用在Java中,创建好的对象作为参数传入方法中后,指向的是同一引用,即实际就是一个对象,主调方法和被调方法中操作该对象,该对象的状态都会改变,已放入Map的只要是同一对象,对象状态也会改变。(函数的返回对象也是一个道理)
源码:
1、主函数
Map<String,AnalysisData> dataMap; // 解析后数据列表
AnalysisData data; // 解析后数据
dataMap = new HashMap<String,AnalysisData>();
……
// 取得本次操作的解析后数据对象
data = getAnalysisData(dataMap, tableName);
// 处理结果赋值给data对象
data.getAdditionData().add(properties);
……
return dataMap;
2、示例函数
/**
* 取得本次操作的解析后数据对象
*
* @param dataMap 解析后数据列表
* @param tableName 数据表名
* @return 解析后数据
*/
private AnalysisData getAnalysisData(Map<String,AnalysisData> dataMap,
String tableName) {
AnalysisData data; // 解析后数据
if(dataMap.containsKey(tableName)) {
data = dataMap.get(tableName);
}
else {
data = new AnalysisData();
dataMap.put(tableName, data);
}
return data;
}