我做了个例子 ,需要可以下载源码:代理模式 1.前言: Spring 的AOP 面向切面编程,是通过动态代理实现的, 由两部分组成:(a) 如果有接口的话 通过 JDK 接口级别的代理 (b) 如果没有接口的话,通过方法级别的代理 CGLib代理实现. 1.1 定义 什么是代理模式? 代理模式就是多一个代理类出来,代替原对象进行一些操作 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用.举例说明,租房的中介.打官司的律师.旅行社,他们可以代替我们做一些事情,这…
java设计模式6--代理模式 1.代理模式介绍: 1.1.为什么要学习代理模式?因为这就是Spring Aop的底层!(SpringAop 和 SpringMvc) 1.2.代理模式的分类: 静态代理 动态代理 1.3.代理模式关系图(以租房子为例) 2.静态代理 2.1.角色分析: 抽象角色:一般会使用接口或者抽象类来解决 真实角色:被代理的角色 代理客户:代理真实角色.代理真实角色后,我们一般会做一些附属的操作 客户:访问代理对象的人 2.2.例1(租房子演示) 2.2.1.抽象角色实现(…
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法. 举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)…
代理模式定义:为另一个对象提供一个替身或者占位符以控制对这个对象的访问.---<Head First 设计模式> 代理模式换句话说就是给某一个对象创建一个代理对象,由这个代理对象控制对原对象的引用,并且创建这个代理对象后可以在调用原对象时增加一些额外操作. 下面就由一张代理原理图说明: 1.Subject抽象主题,Proxy和RealSubject都要实现的接口.这允许任何客户都可以像处理RealSubject对象一样地处理Proxy. 2.Proxy:代理类,必须持有所代理对象的引用. 3.…
前言: 最近在研究Retrofit开源框架的时候,其主要核心代码是通过注解标示参数,动态代理模式实现具体接口,反射机制进行参数解析,最终实现发送请求.其实之前在学习Xutils源码的时候,Xutils 的task也是通过代理模式来访问的.为何要采用代理模式呢?有什么好处呢?抱着这些疑问!今天来学习总结一下. 什么是代理模式? 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用.举例说明,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个…
概念: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 就是一个人或者机构代表另一个人或者机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 类图: 在代理模式中的角色: ● 抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象. ● 目标对象角色:定义了代理对象所代表的目标对象. ● 代理对象角色:代理对象内部含有目标对象的…
在前面学习了代理模式和装饰模式后,发现对两者之间有时候会混淆,因此对两者进行了区别和理解: 装饰模式你可以这样理解,就像糖一样,卖的时候商家大多要在外面包一层糖纸,其实原本还是糖. public interface Sourcable { public void go(); } public class Source implements Sourcable { public void go() { System.out.println("Source method go()"); }…
承接上文 三.计数代理 计数代理的应用场景是:当客户程序需要在调用服务提供者对象的方法之前或之后执行日志或者计数等额外功能时,就可以用到技术代理模式.计数代理模式并不是把额外操作的代码直接添加到原服务中,而是把它们封装成一个单独的对象,这就是计数代理. 考虑这样一个应用,用计数代理统计图书馆中每天借阅书籍的具体次数. 1.定义书籍基本类Book public class Book { private String No; private String name; public Book(Stri…
java 代理模式就是: 将自己要做的事交给别人去做(这个别人就是代理者,自己就是被代理者),为什么自己能做的要交给别人去做了?假如一个小学生小明,现在要写作业,但是又想玩游戏,他更想玩游戏,并且不想被妈妈骂,所有他找了个天才枪手,小红给他代写作业,自己再去把作业交给妈妈检查.小明妈妈看见是小明交的作业,也就没怀疑不是他自己的做的.目的达到了,过程就不那么重要了(当然不是不对的了,这里只是为了讲述设计模式而模拟的某种场景). 2.代理模式要点: 1.一个抽象的主题(这里抽象的主题就是写作业) 2…
所谓的代理模式就是为其它类或对象提供一个代理以控制对这个对象的访问.那么常见的代理有远程代理,虚拟代理,保护代理,智能代理. 1. 远程代理:为一个不同地址空间的对象提供一个本地代理对象. 2. 虚拟代理:根据需要创建一个开销很大的对象. 3. 保护代理:控制原始对象的访问. 4. 智能代理:取代简单的指针,它在访问对象时执行一些附件操作 实现代理的有两种方式 1. 静态代理:就是代理和被代理的对象在代理之前是确定的,他们可以通过继承抽象类或者实现相同的接口来实现. 下面使用代理模式来模拟实现我…