代理模式 PROXY 别名Surrogate
代理对象如何能够真的代理真实对象?
在Java语言中,看起来像的一个方式就是实现同一接口
代理角色和真实对象角色拥有共同的抽象类型,他们拥有相同的对外接口request()方法
ProxySubject内部拥有一个RealSubject
你应该能感觉到组合模式的思想-----他们都是Subject,属于同一个Component
对外有一致的接口
抽象主题角色Subject
声明了真实主题和代理主题的共同接口,任何使用真实主题的地方,都可以使用代理主题
代理主题角色ProxySubject
代理主题角色内部含有对真实对象的引用,从而可以在任何时候操作真实主题
代理主题提供与真实主题的相同的接口,以便任何时刻,都可以替代真实主题
而且,代理主题还可以在真实主题执行前后增加额外的处理,比如:经纪人要先收下费~
真实主题角色RealSubject
被代理的真实主题对象,真正工作的是他,比如经纪人总不会站在舞台上去~
示例代码
Subject 抽象角色 定义了真正的处理请求 的request()方法
package proxy; public interface Subject { void request(); }
RealSubject真实主题角色,实现了处理请求的方法
package proxy; public class RealSubject implements Subject { @Override public void request() { System.out.println("realSubject process request...."); } }
Proxy代理角色
实现了request()方法,用于替代真实主题,内部调用真实主题完成请求
并且额外的提供了pre和after操作
package proxy; public class Proxy implements Subject{ private Subject realSubject; @Override public



