定义:为其他对象提供一种代理以控制对这个对象的访问。
public interface IProxy {
void action();
}
public class ProxyObject implements IProxy{
IProxy iproxy;
public ProxyObject(){
System.out.println("--------");
System.out.println("这是代理类");
System.out.println("--------");
iproxy = new ProxyImpl();
}
@Override
public void action() {
System.out.println("代理开始");
iproxy.action();
System.out.println("代理结束");
}
}
public class ProxyImpl implements IProxy{
@Override
public void action() {
System.out.println("---------");
System.out.println("这是实体类");
System.out.println("---------");
}
}
public class Test {
public static void main(String[] args) {
ProxyObject proxyObject = new ProxyObject();
proxyObject.action();
}
}
运行结果:
--------
这是代理类
--------
代理开始
---------
这是实体类
---------
代理结束
》》使用场景:
1,远程代理:为一个对象在不同的地址空间提供局部代表。--->隐藏一个对象存在于不同地址空间的信息。
2,虚拟代理:根据需要创建开销很大的对象。--->通过代理对象存放实例化需要很长时间的对象。
3,保护代理:控制对原始对象的访问。--->中介角色。
4,智能指针:取代了简单的指针,他在访问对象时执行一些附加操作。--->也就是说在调用真实的对象的时候,代理可以处理一些其他另外的操作。