在项目开发中,我们经常遇到全局数据的使用问题,比如在class A、class C、class ..... 中调用class B的数据,那我们要什么实现呢,其实也很简单,下面列出几个种常用的方式。
1、以文件的形式保存数据。
2、以数据库形式保存数据。
3、以自定义类形式保存数据。
根据项目需求选择合适自己的方式。
这里写了个第3点的demo:
import java.util.HashMap;
//自定义类,继承HashMap
public class FrequencyTransformTools extends HashMap<String,Integer> {
//声明HashMap,用于管理数据
private HashMap<String,Integer> frequencyHash = new HashMap<>();
private static FrequencyTransformTools frequencyTransformTools;
//返回当前实例
public static FrequencyTransformTools getInstance(){
if (frequencyTransformTools == null){
frequencyTransformTools = new FrequencyTransformTools();
}
return frequencyTransformTools;
}
//初始化数据
public void Initialize(){
frequencyHash.put("1",2412); frequencyHash.put("2",2417); frequencyHash.put("3",2411);
frequencyHash.put("4",2427); frequencyHash.put("12",2467); frequencyHash.put("60",5300);
frequencyHash.put("5",2432); frequencyHash.put("13",2472); frequencyHash.put("64",5320);
frequencyHash.put("6",2437); frequencyHash.put("36",5180); frequencyHash.put("149",5745);
frequencyHash.put("7",2442); frequencyHash.put("40",5200); frequencyHash.put("153",5765);
frequencyHash.put("8",2447); frequencyHash.put("44",5220); frequencyHash.put("157",5785);
frequencyHash.put("9",2452); frequencyHash.put("48",5240); frequencyHash.put("161",5805);
frequencyHash.put("10",2457); frequencyHash.put("52",5260); frequencyHash.put("165",5825);
frequencyHash.put("11",2462); frequencyHash.put("56",5280);
}
//实现put接口
@Override
public Integer put(String key, Integer value) {
return frequencyHash.put(key, value);
}
//实现get接口
@Override
public Integer get(Object key) {
return frequencyHash.get(key);
}
}
然后在主线程中调用getInstance()对该类初始化操作
FrequencyTransformTools.getInstance().Initialize();//初始化
之后就可以在项目中的其它类调用它的数据的了
int frequency = FrequencyTransformTools.getInstance().get(chanel);
思路就是这样子,根据自己的需求,可以存储不同的数据类型。
##################################2018/08/15################################
今天看Android物联网开发一书中有一段话,跟上面的代码的思想有点相似。
原文:“在项目中可能需要多处HTTP通信,这时不需要为每次请求都创建一个新的HttpClient,因为HttpClient就像一个小型浏览器,在整个项目中,有一个就够了。因此得出,使用简单的单例的足够了。”
上文的 getInstance() 的设计思想跟原文中指出的单例是一样的,在实际项目中遇到类似的场景不妨参考参考。