您的位置:首页 > 其它

代理模式Proxy Design

2005-06-30 01:11 645 查看
代理模式是对象的结构模式,操作的目标主要是类对象
下面是比较经典又精简的一个例子:
/*
* 代理模式
*/
package test_designPattern;

//抽象角色:
abstract class Subject
{
abstract public void request();
}

//真实角色:实现了Subject的request()方法。
class RealSubject extends Subject
{
public RealSubject()
{
}
public void request()
{
System.out.println("From real subject.");
}
}

//代理角色:
class ProxySubject extends Subject
{
private RealSubject realSubject; //以真实角色作为代理角色的属性
public ProxySubject()
{

}
public void request() //该方法封装了真实对象的request方法
{
preRequest();
if(realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.request(); //此处执行真实对象的request方法
postRequest();
}
private void preRequest()
{
//something you want to do before requesting
}
private void postRequest()
{
//something you want to do after requesting
}
}

//测试
public class test_Proxy_pattern
{
public static void main(String[] args)
{
Subject sub=new ProxySubject();
sub.request();
}
}

代理模式将原来类的真实的操作从调用者的视野里移开,可能还增加了一些调用者觉察不到的操作,不过从类设计者的立场来看这些都不影响调用者使用原先类的功能,为了保护一个类而多生成一个新类,不敢说思想十分正确,至少感到拐了一个弯才实现自己的目的有些不爽。 可能代理模式真正发挥威力的地方是从此衍生的动态代理方法吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: