在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。简单来说代理模式就是通过一个代理对象去访问一个实际对象,并且可以像装饰模式一样给对象添加一些功能。而采用静态代理就只能代理实现了同一接口的类,如果要代理任意类则必须写很多重复的代理类。像最近比较火的Retrofit就直接通过声明好的接口使用动态代理进行网络请求。

Java中的代理模式详解及实例代码

Java中的代理模式详解及实例代码

Java中的代理模式详解及实例代码

Java中的代理模式详解及实例代码

Java中的代理模式详解及实例代码

Java中的代理模式详解及实例代码