代理模式的定义与特点
定义: 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
静态代理模式的主要优缺点有:
- 代理模式会造成系统设计中类的数量增加
- 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;
- 增加了系统的复杂度;
因此面对这些缺点,再次提出了动态代理模式。
动态代理模式:主要是通过反射的机制写出一个万能的代理对象,来解决造成请求处理速度变慢的问题,复杂度问题。
代理模式的结构与实现
基本结构:
代理模式的主要角色如下:
主要是通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实主题的访问。
静态和动态实现:
- 静态:由程序员创建代理类或特定工具自动生成源代码再对其编译,在程序运行前代理类的 .class 文件就已经存在了。
举例:当房东(真实对象)想要租房子,则可以找到中介(代理)去代理(继承)房东去租房子,同时可有中介也需要收取费用(他自带其他功能)。 - 动态:在程序运行时,运用反射机制动态创建而成;