场景
起初为了简便编码,直接在java文件中定义map等集合用于缓存数据,集合形如
private static final Map<String, String> map = new HashMap<String, String>();
public static String get(String key) { return map.get(key); }
public static String put(String key, String value) { return map.put(key, value); }
但这并没有很好的设计,以上的代码文件名称定为map文件,后面会用到。
思考
map集合中都会根据key存取数据,如若key并不是直接传递过来的,而是经过一定的规则计算得到,这样的规则形如
String key = str1 + str2;// str1和str2是两个字符串
我们调用put和get方法的传参不要设计为一个key,而应该设计为str1和str2,当然,如果这个规则由n(一般n>3)个数据参与计算,可以定义一个模型专门用于接收这n个数据。
我们将key的计算规则放在map文件或由map文件调用,这样做有一个好处:最小化了key的计算规则的作用域,也就是说,外部调用者(调用map文件的类)不用考虑key的计算规则,只需要将所需的数据传参,当内存缓存修改为Redis缓存时,Redis的key规则只需要修改一处即可。反之,如果传参key,则外部调用者需要考虑key的生成规则,当key规则需要修改时就悲剧了。