定义
为其他对象提供一种代理以控制对这个对象的访问。涉及到的角色一般有三个
-
抽象角色 声明真实对象和代理对象的共同接口,这样在任何使用真实对象的场合都可以使用代理对象
-
代理角色 代理对象内部含有目标的引用,从而可以在任何时刻操作目标对象。且主要是为了在执行真实对象操作时附加其他的操作,相当于对真实对象进行了封装,不是为了代理而代理
-
真实角色 定义了代理对象所代表的目标对象,代理角色所代表的真实对象,是我们最终引用的对象
场景
简单理解就是事情我不用去做,由其他人来替我完成。且在不用修改代理类的情况下添加新的功能。如调用日志,添加事务控制等。还有在 RMI 中,客户端调用服务端服务的时候,没办法直接调用接口方法,必须要实例化实现接口的类的对象,因此也用到了代理模式(动态代理)
分类
- 静态代理
- 动态代理
网友评论