版权声明:尊重原创,码字不易,转载需博主同意。 https://blog.csdn.net/qq_34626097/article/details/83477876
1. 概述
- 为其他对象提供一种代理以控制对这个对象的访问
2.适用性
-
远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表。
-
虚代理(VirtualProxy)根据需要创建开销很大的对象。
-
保护代理(ProtectionProxy)控制对原始对象的访问。
-
智能指引(SmartReference)取代了简单的指针,它在访问对象时执行一些附加操作。
-
上面的不一一写出来,但抗议作为一个思想,先了解。
3.使用知识
- 接口的多态性,通过两个interface接口多态的应用
- 构造器代理类中新建被代理类
- 虚拟方法调用
4.核心思想
- 不直接让被代理类去完成某种功能,而是通过代理类去控制被代理类去执行自己的某个方法,如:被代理类通过代理类去买房,虽然买房子的看起来是由代理类买的,但真正付钱的人是被代理类,房证的名字也是代理类的。简单的理解为一个中介的功能。
5. 类图
6.dome
//接口的应用:代理模式
public class TestProxy {
public static void main(String[] args) {
Object obj = new ProxyObject();
obj.action();
}
/*输出结果
*代理类创建成功
*代理类开始执行
*++++被代理类开始执行++++
*++++具体的操作++++
*++++被代理类执行完毕++++
*代理类执行完毕
/
}
interface Object{
void action();
}
//代理类
class ProxyObject implements Object{
Object obj;
public ProxyObject() {
System.out.println("代理类创建成功");
obj = new ObjectImpl();
}
public void action() {
System.out.println("代理类开始执行");
obj.action();
System.out.println("代理类执行完毕");
}
}
//被代理类
class ObjectImpl implements Object{
public void action() {
System.out.println("++++被代理类开始执行++++");
System.out.println("++++具体的操作++++");
System.out.println("++++被代理类执行完毕++++");
}
}