1.含义
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
2.类图
3.代码
/*
* 抽象主题角色
*/
public abstract class Subject {
abstract public void request();
}
/*
* 真实主题角色
*/
public class RealSubject extends Subject {
public RealSubject() {
}
public void request() {
System.out.println("From real subject.");
}
}
/*
* 代理主题角色
*/
public class ProxySubject extends Subject {
private RealSubject rs;
public ProxySubject() {
}
public void request() {
preRequest();
if (rs == null) {
rs = new RealSubject();
}
rs.request();
postRequest();
}
private void preRequest() {
}
private void postRequest() {
}
}
/*
* 测试类
*/
public class Test {
public static void main(String[] args) {
Subject s = new ProxySubject();
s.request();
}
}
4.和装饰模式的区别
装饰模式:增强原接口的方法。
代理模式:增强对原接口的控制,经常在原接口方法之前,之后执行其它方法。
z