您的位置:首页 > 其它

设计模式之代理模式

2015-12-18 21:01 183 查看
定义:

为其他对象提供了一种代理,以控制对这个对象的访问。

角色:

抽象实体类(Subject):定义了实体类和代理的公用接口;

实体类(RealSubject):需要控制访问的实体对象即代理的对象;

代理类(Proxy):控制对实体的访问,在代理类中保存一个对实体的引用,以便调用实体对象的接口。

UML图:



适用场景:

1.远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

2.虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。

3.安全代理:用来控制真实对象访问时的权限。

4.智能指引:当调用真实的对象时,代理处理另外一些事。

实例代码:

/*
* 代理模式
*/
/*
* 实体类和代理的公用接口
*/
interface Subject{
abstract public void Request();
}

/*
* 实体类
*/
class RealSubject implements Subject{
public void Request(){
System.out.println("实体类");
}
}
/*
* 代理
*/
public class Proxy implements Subject{
//对实体类的一个引用
private RealSubject rs;
public Proxy(){
if(rs == null)
rs = new RealSubject();
}
public void Request(){
//调用实体类的方法
rs.Request();
}
}


public class Main {

public static void main(String[] args) {
//实例化代理类
Proxy proxy = new Proxy();
proxy.Request();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: