「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」
含义: 通过代理的方式对其他对象进行访问。
顾名思义就是别人代理你去做一些事情,下面就是买咖啡的一个例子,老板想喝咖啡了,老板这么忙,当然不能自己跑腿了,所以他就吩咐自己的秘书去做这件事情,这时候老板就是被代理的类,秘书就是代理类。
代理模式按照创建时期可以分成静态代理和动态代理两种,下面这种是是静态代理,静态代理是在运行之前就创建代理类。代理对象持有被代理对象的引⽤,调⽤代理对象⽅法时也会调⽤被代理对象的⽅法。
1 | java复制代码 public interface BuyCoffee{ |
动态代理就不需要在运行之前就创建代理类,而是在程序运⾏时通过反射的方式来创建具体的代理类。
1 | typescript复制代码 public class DynamicProxyHandler implements InvocationHandler { |
动态代理减少了对业务接口的依赖,降低了耦合度。
最后说说动态代理的优缺点,优点是 符合开闭原则,有较好的扩展性,缺点是 当有太多需求时候,需要太多的接口,不利于管理接口;同时接口中的内容一旦发生改变,那么代理类也得进行相应的修改,非常不方便。
本文转载自: 掘金