介绍
代理是我们开发过程中经常用到的功能,比如Spring的AOP;但却很少了解其原理,接下来我们会讲解代理的使用,静态代理,动态代理,本章先介绍静态代理。
代理就是将两个直接调用的关系通过代理来执行,从而隐藏具体的实现,也可以在代理里面做一些额外的逻辑,比如统计日志,统计执行时间等。
代码实战
静态代理一般是对某个接口进行代理,直接上代码,
接口TestProxyInterface及方法say
定义接口,方法say
实现类:TestProxyImpl实现接口,返回hello+参数
接口实现类
代理类实现:ProxyTest, 定义了一个该接口的对象,通过构造函数传入要代理的类,也就是这个接口的任意实现类都可以被代理,(通过实现相同接口的方式,千万不要代理自己哦,可以自己试试什么样)
同样实现该接口,当然也可以不实现,实现该接口为了让调用代理类和调用真实类的方法一致,为了让代码调用的逻辑展示一致。不强求,算作最佳实践吧
我们在代理方法里面实现了执行时间的打印,在执行实际方法之前获取开始时间的毫秒值,
代理方法执行完,获取结束时间的毫秒值,然后打印出实际方法的返回值信息,和方法执行时间
代理类及实现
最后最后,执行下该代理
创建一个TestProxyImpl类对象,通过构造方法传给ProxyTest代理类,然后执行代理的say方法,传入参数“我是代理”
然后看看结果,显示hello 我是代理----代理自行任务消耗0毫秒,
符合预期结果:执行了实际代理的方法,将参数前增加了hello,也执行了代理的方法执行时间。
执行代理
静态代理是不是很简单,至于需不需要实现相同接口,那就是大家不同理解了,有认为好,有认为不好的,不必过于纠结。
更多潍坊达内怎么样相关资讯,请扫描下方二维码