目录
0、定义
为其他对象提供一种代理以控制对这个对象的访问。
1、代理模式的三种角色
- 抽象主题(Subject):抽象主题 是一个接口,该接口是对象和它的代理所共用的接口,即是实际主题 角色和代理角色实例所实现的接口。
- 实际主题(RealSubject):实际主题 是实现抽象主题 接口的类。实际主题 的实例是代理角色(proxy)实例所要代理的对象。
- 代理(Proxy):代理 是实现抽象主题 的类。代理 含有主题接口声明的变量,该变量用来存放实际主题 角色的实例引用,这样一来,代理 的实例就可以控制对它所包含的实际主题角色的实例访问,即可以控制对它所代理对象的访问。
2、代理模式的UML类图
3、示例代码
抽象主题
java
package xyz.jangle.design.proxy;
public interface Subject {
public void request();
}
具体主题
java
package xyz.jangle.design.proxy;
public class AppMain22 {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
代理
java
package xyz.jangle.design.proxy;
public class Proxy implements Subject {
private Subject subject;
Proxy(){
subject = new RealSubject();
}
@Override
public void request() {
subject.request();
}
}
客户端(使用)
java
package xyz.jangle.design.proxy;
public class AppMain22 {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
输出结果
bash
to do something