藤虎广州网站建设,全国行业名录搜索系统官网,广州网站设计成功柚米,江苏省住房和城乡建设厅网站代理模式 代理模式的英文叫做Proxy或Surrogate#xff0c;中文都可译为”代理“#xff0c;所谓代理#xff0c;就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下#xff0c;一个客户不想或者不能够直接引用一个对象#xff0c;而代理对象可以在客…代理模式 代理模式的英文叫做Proxy或Surrogate中文都可译为”代理“所谓代理就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下一个客户不想或者不能够直接引用一个对象而代理对象可以在客户端和目标对象之间起到中介的作用 A. 抽象主题角色 声明了真实主题和代理主题的共同接口这样一来在任何可以使用真实主题的地方都可以是使用代理主题 B. 代理主题Proxy角色 代理主题角色内部含有对真实主题的引用从而可以在任何时候操作真实主题对象代理主题角色提供一个与真实主题角色相同的接口以便可以在任何时候都可以替代真实主题控制对真实主题的引用负责在需要的时候创建真实主题对象和删除真实主题对象代理角色通常在将客户端调用传递给真实的主题之前或之后都要执行某个操作而不是单纯地将调用传递给真实主题对象。 C. 真实主题角色 定义了代理角色所代表地真实对象 例如 用动态代理模式重构 JDK动态代理 目标类 拦截器 代理类 总结1、因为利用JDKProxy生成的代理类实现了接口所以目标类中所有的方法在代理类中都有。 2、生成的代理类的所有的方法都拦截了目标类的所有的方法。而拦截器中invoke方法的内容正好就是代理类的各个方法的组成体。 3、利用JDKProxy方式必须有接口的存在。 4、invoke方法中的三个参数可以访问目标类的被调用方法的API、被调用方法的参数、被调用方法的返回类型。 用JDK动态代理模式重构 用JDK动态代理模式重构hibernate事务 cglib动态代理 1、 CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 2、 用CGlib生成代理类是目标类的子类。 3、 用CGlib生成 代理类不需要接口 4、 用CGLib生成的代理类重写了父类的各个方法。 5、 拦截器中的intercept方法内容正好就是代理类中的方法体 用cglib动态代理模式重构hibernate事务 spring两种代理方式 若目标对象实现了若干接口spring使用JDK的java.lang.reflect.Proxy类代理。 优点因为有接口所以使系统更加松耦合 缺点为每一个目标类创建接口若目标对象没有实现任何接口spring使用CGLIB库生成目标对象的子类。 优点因为代理类与目标类是继承关系所以不需要有接口的存在。 缺点因为没有使用接口所以系统的耦合性没有使用JDK的动态代理好。原文https://blog.csdn.net/cckevincyh/article/details/54962920转载于:https://www.cnblogs.com/nizuimeiabc1/p/10083431.html