在项目中免不了要使用第三方库, 使用第三方库,不但要统一,还可以浅浅的封装一层,预留未来的扩展性。
为什么建议浅浅的封装一层?
举个例子,如果不封装,redis官方Java客户端Jedis可能有这样一些接口:
String Memcache::get(String key)
String Memcache::set(String key, String value)
String Memcache::del(String key)
浅浅的封装一层,会变成这样:
String MyKV::get(String key) {
String result = Memcache::get(key);
return result;
}
String MyKV::set(String key, String value) {
String result = Memcache::set(key, value);
return result;
}
String MyKV::del(String key) {
String result = Memcache::del(key);
return result;
}
这有什么好处呢?
(1)对上游屏蔽底层实现的细节,调用方不用关注缓存是memcache还是redis,调用方只关注MyKV;
(2)底层变化的时候,对上游透明,当memcache不能满足需求,要切换为redis时,所有调用方不需要大的变化,升级一个最新的MyKV即可,MyKV的接口不变,实现变为:
String MyKV::get(String key) {
String result = Jedis::get(key);
return result;
}
String MyKV::set(String key, String value) {
String result = Jedis::set(key, value);
return result;
}
String MyKV::del(String key) {
String result = Jedis::del(key);
return result;
}
统一实现一些通用的功能,就不需要每一个上游升级了,例如,要实现一个缓存访问时间统计的功能,所有调用方不需要大的变化,升级一个最新的MyKV即可.
同理,如果要实现统一的告警,调用链跟踪,SQL执行时间,也可以用类似的方法。