public class A {
//是否使用缓存
private boolean flag = true;
public Object method(String param1, String param2) {//参数不固定
Object o;
if(flag) {
B b = new B();//相当于缓存
o = b.get("o");
if(o == null) {
o = C.get(param1, param2);//相当于从数据库里查数据
b.set("o", o);//在放入缓存
}
} else {
o = C.get(param1, param2);//直接查询
}
return o;
}
}
大致意思就是把缓存做成可控制的,用一个 boolean 值来控制开关,程序里要做很多判断,请教有办法把这逻辑整理成一个公共的方法吗?每次调用一下公共方法传写参数即可,是否开启缓存都在公共方法里处理!
1
pH 2016-08-01 11:15:54 +08:00
把 flag 这个 property 去掉,直接作为函数参数不就可以了么?
|
2
BuilderQiu 2016-08-01 11:42:20 +08:00
一个方法用 Cache 一个方法不用,调用的时候根据需求区分不好么?
|
3
tomoya92 OP |
4
kfll 2016-08-01 12:57:42 +08:00
可以写 annotation 吧
|
5
TakWolf 2016-08-01 13:09:59 +08:00
Object c = Cache.get(new GetFromDB {
return Dat.find(); }, new GetFromRedis { return Redis.find(); }); 查询过程还是要自己写 我随便瞎想的 |
6
nigelvon 2016-08-01 13:25:52 +08:00
为啥我看了好几遍也没看懂问题
|
7
zealic 2016-08-01 14:39:54 +08:00
AOP 不就干这事的么,关键在于把两个参数合并成一个缓存 key
|
8
tomoya92 OP |
10
fishioon 2016-08-01 16:33:23 +08:00
为啥不把 b 和 c 封装到一起呢?,同时将 flag 作为参数传递
|