关于使用第三方库的一些思考和建议

本文讨论了在项目中封装第三方库的重要性,通过创建抽象层如`StringMyKV`,可以隐藏底层实现细节,如从`Memcache`到`Jedis`的切换。封装使得调用方无需关注具体实现,仅需关注`MyKV`接口,增强了代码的稳定性和可维护性。此外,封装也便于添加新功能,如统计缓存访问时间、统一告警和调用链跟踪,只需升级`MyKV`即可,减少了对上层应用的影响。
摘要由CSDN通过智能技术生成

在项目中免不了要使用第三方库, 使用第三方库,不但要统一,还可以浅浅的封装一层,预留未来的扩展性。

为什么建议浅浅的封装一层?

举个例子,如果不封装,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执行时间,也可以用类似的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值