什么是代理模式?

为其他对象提供一个代理以控制对这个对象的访问。
代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。

什么是静态代理模式?

由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。

什么是动态代理模式?

动态代理类:在程序运行时,运用反射机制动态创建而成。
与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler接口提供了生成动态代理类的能力。

动态代理的应用场景?

在现实生活中也有很多代理的日志,如外卖小哥代理你帮你送饭,律师代理你帮你打官司,婚庆公司代理你帮你结婚,o 不对 是帮你筹办婚礼 真正结婚的是你
日常的应用中,代理模式可以提供非常好的访问控制。最常见的就是Spring AOP

代理模式的优点?

职责清晰

真是的角色就是实际的业务逻辑,不用关心其他非业务职责的事物,通过后期的代理完成一件事务,附带的结果就是编程简介清晰。

高扩展性

具体主题角色是随时都会发生变化的,只要它实现了接口,不管它发生什么变化,都逃不脱如来神掌(接口),那我们的代理完全就可以在不做任何修改的情况下使用。


动态代理模式