设计模式 - 代理模式
深圳 2020/08/02
UML图
代理模式 ( Proxy ), 为其他对象提供一种代理以控制对这个对象的访问.
package proxy.generic;
public interface Subject {
void request();
}
package proxy.generic;
public class RealSubject implements Subject {
@Override
public void request() {
System.out.println("真实的请求.");
}
}
package proxy.generic;
public class Proxy implements Subject {
private RealSubject realSubject;
@Override
public void request() {
if (realSubject==null) {
realSubject = new RealSubject();
}
realSubject.request();
}
}
package proxy.generic;
public class ClientMain {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
打印输出
真实的请求
一些问题
- 使用场景?
- 远程代理, 也就是为一个对象在不同的的地址空间提供局部代表.这样可以隐藏一个对象存在于不同地址空间的事实.
- 虚拟代理. 根据需要创建开销很大的对象. 通过它来存放实例化需要很长时间的真是对象.
- 安全代理. 用来控制真实对象访问时的权限.
- 智能指引. 当调用真实的对象时, 代理处理另外一些事.
代理模式其实就是在访问对象时引入了一定程度的间接性, 因为这种间接性, 可以附加多种用途.
代理就是真实对象的代表.