复习一下JAVA的代理,先把常见的静态代理走一遍。
注:
1.使用代理的目的,始终是为了不改变原有业务代码的情况下,得到增强或者改变。
2.间接的访问目标对象,避免直接访问目标对象给系统带来不必要的复杂性。
假设需求为,原有一个通用商品售出功能,业务改动希望PC端售出前可以提前通知,售后可以记录下售出。
正常我们可能会先在原先接口上新增方法,进行不同端判断,业务变动又新增....长久后耦合性就高了。
那就可以使用静态代理来不干扰原来代码的情况下实现。
一、先创建个原有的通用售商品的接口
image.png二、然后实现接口卖商品的具体逻辑
image.png三、创建个代理类来实现PC端需求
image.png四、创建个测试类,PC端调用
image.png五、看打印结果
image.png静态代理的缺点
虽然静态代理实现简单,且不侵入原代码,但是,当场景稍微复杂一些的时候,静态代理的缺点也会暴露出来。
1、 当需要代理多个类的时候,由于代理对象要实现与目标对象一致的接口,有两种方式:
只维护一个代理类,由这个代理类实现多个接口,但是这样就导致代理类过于庞大
新建多个代理类,每个目标对象对应一个代理类,但是这样会产生过多的代理类
2、 当接口需要增加、删除、修改方法的时候,目标对象与代理类都要同时修改,不易维护。
所以就有了动态代理。
网友评论