介绍
为其他对象提供一种代理以控制对这个对象的访问
使用
/** * 代理类 */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"); }}复制代码
应用
- 远程代理:为一个对象在不同的地址空间提供局部代表,隐藏一个对象存在与不同地址空间的事实。
- 虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。
- 安全代理:控制真实对象的访问权限
- 智能指引:当调用真实的对象时,代理处理另外一些事。