Java代理(一) 背景介绍
2017-08-16 16:58
239 查看
概念
为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。
代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。
为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性。
从图中可以看出,代理接口(Subject)、代理类(ProxySubject)、委托类(RealSubject)形成一个“品”字结构。
事例
比如 场景是完成数据库的查询,并且记录查询前后花的时间
那么,从设计上
代理接口 subject是一个interface 提供查询数据库的操作,并不实现
委托类 realSubject 实现数据库的连接,查询,断开
代理类,在调用委托类之前,记录查询开始时候,调用之后,记录查询结束时间,打印出花费的时间
分类
按照代理的创建时期,代理类可以分为两种:
静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。
动态:在程序运行时运用反射机制动态创建而成。
为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。
代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。
为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性。
从图中可以看出,代理接口(Subject)、代理类(ProxySubject)、委托类(RealSubject)形成一个“品”字结构。
事例
比如 场景是完成数据库的查询,并且记录查询前后花的时间
那么,从设计上
代理接口 subject是一个interface 提供查询数据库的操作,并不实现
委托类 realSubject 实现数据库的连接,查询,断开
代理类,在调用委托类之前,记录查询开始时候,调用之后,记录查询结束时间,打印出花费的时间
分类
按照代理的创建时期,代理类可以分为两种:
静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。
动态:在程序运行时运用反射机制动态创建而成。
相关文章推荐
- Java 动态代理介绍及用法
- java的三种代理模式和spring aop介绍
- Java中静态代理和动态代理介绍
- java.lang.Instrument 代理Agent使用详细介绍
- Java--Proxy代理介绍及实现机制
- java技术背景及相关介绍
- [Java][转]Memcache —— 简单介绍:背景、原理、应用
- Java中静态代理和动态代理介绍
- Java设计模式之代理模式(Proxy模式)介绍
- Java动态代理机制介绍(jdk和cglib的区别)
- Java中静态代理和动态代理介绍
- Java中静态代理和动态代理介绍
- 1..net转java背景介绍
- Java中静态代理和动态代理介绍
- 代理角色java设计模式之静态代理详细介绍
- Java中静态代理和动态代理介绍
- Java--Proxy代理介绍及实现机制
- Java 动态代理与CGLIB详细介绍
- java动态代理使用方法简单介绍
- java 代理proxy的介绍