在我们的日常生活中通常需要通过第三方的介绍来办理相关的业务,比如租房子会去找房屋中介、找对象去婚姻介绍所。今天给大家介绍的这个设计模式就是关于这样的情况,叫做代理模式。
代理模式结构图如下:
Subject类,定义RealSubject和Proxy的公共接口:
package com.kunl.proxy;
/**
* @author fokman
* @version 1.0
* @created 31-五月-2011 22:22:05
*/
public abstract class Subject {
public abstract void request();
}
Proxy类,保存一个引用使代理可以访问实体:
package com.kunl.proxy;
/**
* @author fokman
* @version 1.0
* @created 31-五月-2011 22:22:05
*/
public class Proxy extends Subject {
public RealSubject realSubject;
public void request(){
if(realSubject==null){
realSubject = new RealSubject();
}
realSubject.request();
}
}
RealSubject类,定义Proxy所代表的真实实体:
package com.kunl.proxy;
/**
* @author fokman
* @version 1.0
* @created 31-五月-2011 22:22:05
*/
public class RealSubject extends Subject {
public RealSubject(){
}
public void finalize() throws Throwable {
super.finalize();
}
public void request(){
System.out.println("真实的请求");
}
}
客户端代码调用:
package com.kunl.proxy;
/**
* @author fokman
* @version 1.0
* @created 31-五月-2011 22:22:05
*/
public class Client {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
总结:代理模式一共分为四种
1.远程代理,就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
2.虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。
3.安全代理,用来控制真实对象访问的权限
4.只能指引,当调用真实对象时,代理处理另外一些事。