设计模式之代理模式
代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
应用场景
- 远程代理不同地址空间的对象,都当作本地化对象来处理
- 控制对象的访问权限。
当遇到一下情况是可以使用代理模式:
- 想控制对另一个对象的访问
- 懒加载
- 控制日志输出
- 计算对象引用
- 控制网络链接问题
代理模式模式结构
浴室分为男浴室和女浴室,其中前台判断能够进入浴室的前提是没有皮肤病,如有没有,才让进入浴室。这里的前台就是一个代理,它代理来浴室,用来判断能否进入浴室的权限。这就是代理的作用。
代理模式和装饰者模式比较容易混淆。需要记住的是,两者的功能区别在于,代理模式改变的是对象的职能,控制对象的行为。而装饰者模式是对职能的增加和减少。使用场景上有所不同。
代码
代理模式大致能够分为三部分:抽象职能类,代理类,被代理类
第一部分:抽象职能类
1 | // Person 基本信息类 和性别枚举 |
第二部分:被代理类
1 | public class MaleBathRoom extends BathRoom { |
第三部分:代理类
1 |
|
客户端调用:
1 | public class App { |
结果:
1 | name : 1 sex: MALE go bath for male ! |