代理模式 PROXY Surrogate 结构型 设计模式(十四)

 代理模式 PROXY 别名Surrogate

原文地址:image_5c074938_56cd
代理对象如何能够真的代理真实对象?
在Java语言中,看起来像的一个方式就是实现同一接口
image_5c074938_5f89
 
代理角色和真实对象角色拥有共同的抽象类型,他们拥有相同的对外接口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 
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信