介绍
为其他对象提供一种代理以控制对这个对象的访问
使用
/**
* 代理类
*/
public class Proxy implements Greet{
private Tom tom;
public Proxy(Tom tom) {
this.tom = tom;
}
public void Greet() {
tom.Greet();
}
public static void main(String[] args) {
Proxy proxy = new Proxy(new Tom());
proxy.Greet();
}
}
/**
* 功能接口
*/
interface Greet{
void Greet();
}
/**
* 被代理类
*/
class Tom implements Greet{
public void Greet() {
System.out.println("hello");
}
}
应用
- 远程代理:为一个对象在不同的地址空间提供局部代表,隐藏一个对象存在与不同地址空间的事实。
- 虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。
- 安全代理:控制真实对象的访问权限
- 智能指引:当调用真实的对象时,代理处理另外一些事。