场景与思考
最近工作遇到给接口加缓存的任务,像我这么有想法的大好青年,肯定要写无侵入性的代码啊,怎么能直接在原先的代码上动刀呢,所以我很聪明的加了个代理如图。
写完了就是这样的
但是问题是我有35个方法 - - 都需要加,并且逻辑都很一样,大概只是一些类型和被代理的类不一样
所以我就想把逻辑抽出来,,,,这一抽就是好几天- - 真是生抽啊,几经周转找到了Function
个人理解
Function是什么?简单说Function是个接口,之前我们都给方法里面穿参数,参数有对象,值,枚举等,而function传的是方法,也就是说你写好一个框架,可以传进去一个方法执行。
例子
https://www.jianshu.com/p/0746aaf5f955 没错我就是懒得写= = 写代码的时候把例子给删了 咳咳
https://blog.csdn.net/huo065000/article/details/78964382 这个也还可以
再附上一张图这样图网上没有(方便用不同的function解决问题)
使用
抽象出了一个代理父类
心得
要不是看过java8的流实现原理,还不知道能传方法,平时还是要多看书,有这个缓存我也会用动态代理和spring 缓存标签来实现下,看看有没有更好的解。