所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。
为什么需要代理模式呢?
因为在一些情况下,一个客户不能够或者不想直接引用一个对象,而代理对象
可以在客户端和目标对象之间起到中介的对用。
我们熟悉的Windows快捷方式就是代理模式的一个简单的例子。
下面我们给出代理模式的简单代码:
1. 首先,构造一个抽象主题类
2. 接着,继承该抽象主题类,我们构建一个真实主题类
3. 构造代理主题角色
4. 客户端测试代码
5. 运行结果
From real subject.
From real subject.
为什么需要代理模式呢?
因为在一些情况下,一个客户不能够或者不想直接引用一个对象,而代理对象
可以在客户端和目标对象之间起到中介的对用。
我们熟悉的Windows快捷方式就是代理模式的一个简单的例子。
下面我们给出代理模式的简单代码:
1. 首先,构造一个抽象主题类
package dp.proxy.simple;
abstract public class Subject {
abstract public void request();
}
2. 接着,继承该抽象主题类,我们构建一个真实主题类
package dp.proxy.simple;
public class RealSubject extends Subject {
public RealSubject() {
}
public void request() {
System.out.println("From real subject.");
}
}
3. 构造代理主题角色
package dp.proxy.simple;
public class ProxySubject extends Subject {
private RealSubject realSubject;
public ProxySubject() {
}
public void request() {
preRequest();
if (realSubject == null) {
realSubject = new RealSubject();
}
realSubject.request();
postRequest();
}
private void preRequest() {
// something you want to do before requesting
}
private void postRequest() {
// something you want to do after requesting
}
}
4. 客户端测试代码
package dp.proxy.simple;
public class Client {
private static Subject subject;
static public void main(String[] args) {
subject = new ProxySubject();
subject.request();
subject.request();
}
}
5. 运行结果
From real subject.
From real subject.