Java设计模式(八)----代理模式】的更多相关文章

我做了个例子 ,需要可以下载源码:代理模式 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.抽象角色实现(…
代理模式定义:为另一个对象提供一个替身或者占位符以控制对这个对象的访问.---<Head First 设计模式> 代理模式换句话说就是给某一个对象创建一个代理对象,由这个代理对象控制对原对象的引用,并且创建这个代理对象后可以在调用原对象时增加一些额外操作. 下面就由一张代理原理图说明: 1.Subject抽象主题,Proxy和RealSubject都要实现的接口.这允许任何客户都可以像处理RealSubject对象一样地处理Proxy. 2.Proxy:代理类,必须持有所代理对象的引用. 3.…
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法. 举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)…
概念: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 就是一个人或者机构代表另一个人或者机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 类图: 在代理模式中的角色: ● 抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象. ● 目标对象角色:定义了代理对象所代表的目标对象. ● 代理对象角色:代理对象内部含有目标对象的…
在前面学习了代理模式和装饰模式后,发现对两者之间有时候会混淆,因此对两者进行了区别和理解: 装饰模式你可以这样理解,就像糖一样,卖的时候商家大多要在外面包一层糖纸,其实原本还是糖. 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…
前言: 最近在研究Retrofit开源框架的时候,其主要核心代码是通过注解标示参数,动态代理模式实现具体接口,反射机制进行参数解析,最终实现发送请求.其实之前在学习Xutils源码的时候,Xutils 的task也是通过代理模式来访问的.为何要采用代理模式呢?有什么好处呢?抱着这些疑问!今天来学习总结一下. 什么是代理模式? 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用.举例说明,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个…
所谓的代理模式就是为其它类或对象提供一个代理以控制对这个对象的访问.那么常见的代理有远程代理,虚拟代理,保护代理,智能代理. 1. 远程代理:为一个不同地址空间的对象提供一个本地代理对象. 2. 虚拟代理:根据需要创建一个开销很大的对象. 3. 保护代理:控制原始对象的访问. 4. 智能代理:取代简单的指针,它在访问对象时执行一些附件操作 实现代理的有两种方式 1. 静态代理:就是代理和被代理的对象在代理之前是确定的,他们可以通过继承抽象类或者实现相同的接口来实现. 下面使用代理模式来模拟实现我…
1.代理模式定义 为其他对象提供一种代理以控制对这个对象的访问.代理对象起到中介服务,可以去掉功能服务和增加额外的服务. 其实按照官方的说法可能不太好理解,代理模式就好比我们生活中买票,一般情况下我们都会去火车站(原对象)买票,但是有的情况下可能我们离火车站比较远不方便去,那我们就会去火车票代售点去(我们的代理对象)买,在这里代售处就是对火车站的一个代理,可以实现卖票的功能,同时呢,代售处也有自己的额外的功能,比如火车票代售处买票需要额外的手续费,火车站能提供的所有服务代售处不是全有,比如代售处…
1,什么是代理模式? 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 2,策略模式有什么好处? 在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 3,代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口: 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象.同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当…
其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思.再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法.先来看看关系图: 根据上文的阐述,代理模式就比较容易的理解了,我们看下代码: [java] view plaincopy public interface Sourcea…
问题的提出 现在生活中,常常在微信朋友圈里面看到代购的信息,你想在国外买什么,香港买什么,但是又懒得自己过去,于是常常委托别人帮忙买奶粉买那啥的.这类问题的缘由是因为客户和原产地没有直接的接触,所以需要一个代理(代购)的第三者来实现间接引用.代理对象可以在客户端和目标对象间起到中介作用,而且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务.代理模式是一种很好实现客户对象与代理对象分离的策略.其抽象UML图如下图 代理模式包含如下角色 ISubject:抽象主题角色,是一个接…
定义:代理模式这种设计模式是一种使用代理对象来执行目标对象的方法并在代理对象中增强目标对象方法的一种设计模式. 解读定义: 1.代理对象和目标对象有共同的接口: 2.使用代理对象执行目标对象中的方法: 3.在代理对象中增强目标对象方法. 设计模式原则:开闭原则(对扩展开放,对修改关闭).一种好的设计模式甚至是架构,都是在不修改原有形态的基础上扩展出新的功能. 下面从代码角度理解代理模式: 要素:帅哥.美女.媒婆,那么美女害羞不好意思说话,这个时候媒婆就充当代理对象的身份.美女就是目标对象,并且还…
基本介绍: 代理模式(Proxy)为一个对象提供一个替身,以控制对这个对象的访问.即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能,想在访问一个类时做一些控制 代理的对象可以是远程对象.创建开销大的对象或需要安全控制的对象,代理模式有不同的形式, 主要有三种静态代理(需要实际的类文件).动态代理 (JDK 代理.接口代理)和Cglib理代理(可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴) 静态代理: 静态代理…
目录 定义 作用 意图 主要解决问题 优缺点 与装饰者模式的区别 结构 从Tony老师来看实现方式 静态代理 动态代理 JDK动态代理的实现 cglib动态代理的实现 定义 为其他对象提供一种代理来控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用 作用 不改变原类的代码,而增强原类对象的功能 可以选择前置.后置.环绕.异常处理增加 意图 为其他对象提供一种代理以控制对这个对象的访问 主要解决问题 在直接访问对象时带来的…
1.  定义:为其它对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 2.  类图:代理对象和被代理对象拥有共同父接口,代理对象依赖被代理对象. 3.  优点: 代理模式能将代理对象与真正被调用的对象分离,在一定程度上降低了系统的耦合度: 代理模式能在客户端和目标对象之间起到了一个中介作用,这样可以起到保护目标对象的作用.代理对象也可以对目标对象调用之前或调用之后进行其他操作. 4.  缺点: 增…
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式: 人如其名,代理相信大家都可以经常看到什么什么代理,现实中代理太多了.感受最真实的是火车票的代理,经常可以在街上看到,你买票的是在代理商买的,但是付的钱依然会交给铁大哥,这就是代理.现实中的你可能会接触的例子就是叫同学去给你买票,实际上不是你去买,但是是票是你的.这也是代理. 代理模式组成: 抽象角色:通过接口或抽象…
最近公司从新开发一个项目,为此对老的代码进行评估分析发现有些地方是可以采用代理模式来进行的,为此对代理模式进行了一次理解: 代理模式:即为指定的目标对象提供一个代理商,由代理商来完成对目标对象的操作. 代理类图: 抽象对象角色或者接口角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方就都可以使用代理对象. 目标对象角色:定义了所需要代理对象的真实对象. 代理对象角色:代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象:代理对象通常在客户端调用目标对象之前或…
01.什么是代理模式? 解析:代理(Proxy):代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不想或者不能直接引用另一个对象, 而代理对象可以在客户端和目标对象之间起到中介的作用.代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象. 这些额外的操作通常需要与实际对象进行通信. 02.代理的组成都有什么? 解析:由三部分组成,分别是:抽象对象(Subject 接口),真实对象(RealSubject 实现了Subje…
计算类中方法运行时间的几种方案: Client: package com.tn.proxy; public class Client { public static void main(String[] args) { /* Car car=new Car(); car.move(); */ //通过继承计算方法的运行时间 /* CarTimeByExtends ctp=new CarTimeByExtends(); ctp.move(); */ //通过聚合计算类中方法运行时间 /* Car…
今天看到传智播客李勇老师的JDBC系列的第36节——通过代理模式来保持用户关闭连接的习惯.讲的我彻底蒙蔽了,由于第一次接触代理模式,感到理解很难,在博客园找到一篇文章,先记录如下: 引用自java设计模式之代理模式,作者爱我所艾.(()为我手记) 1,什么是代理模式? 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 2,策略模式(应该说的是代理这种策略模式)有什么好处? 在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用.…
首先来看一下代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用, 其特征是代理类与委托类有同样的接口.代理模式是常用的java设计模式. 代理模式能够在不修改源码的情况下增强方法,在方法前后增加日志记录,权限管理等功能. 表现形式如下图: 在java中,代理模式分成2种:静态代理模式和动态代理模式;今天我们主要讨论的是静态代理. 1 静态代理静态代理模式满足如下的几个条件:a.代…
Java设计模式——动态代理 java提供了动态代理的对象,本文主要探究它的实现, 动态代理是AOP(面向切面编程, Aspect Oriented Programming)的基础实现方式, 动态代理使代码的重复更少,更便与维护 本文参考了满一行老师和马士兵老师的视频,在此表示Thanks. 假设小张通过QQ和一个网名为如花的妹纸聊天, 而在QQ的另一端,这个网名为如花的妹纸的name是小丽 但是,正在聊天的时候小丽生病了不想打字,小丽就找她的男朋友帮忙回应 小丽的男朋友在如花的QQ账号上与小张…
from://http://www.cnblogs.com/xwdreamer/archive/2012/05/23/2515306.html 设计模式之代理模式之二(Proxy)   0.前言 在前面一篇博客设计模式之代理模式(Proxy)中我们已经讲解了一部分代理模式,下面我们继续讲解代理的有关内容,包括代理的分类以及java中的代理. 1.代理的分类 事实上代理能够被分为很多种类,大致有如下这些:虚代理.远程代理.copy-on-write代理.保护代理.Cache代理.防火墙代理.同步代…
GOF23设计模式之代理模式 核心作用:通过代理,控制对对象的访问.可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理(即:AOP的微观实现) AOP(Aspect Oriented Programming 面向切面编程)的核心实现机制 核心角色: 1)抽象角色:定义代理角色和真实角色的公共对外方法 2)真实角色:实现抽象角色,定义真实角色索要实现的业务逻辑,供代理角色调用.关注真正的业务逻辑! 3)代理角色:实现抽象角色,是真实角色的代理,通过真实角色…
在Mybatis源码解析,一步一步从浅入深(五):mapper节点的解析文章的最后部分,我们提到了动态代理的概念,下面我们就简单了解一下动态代理. 一,概念 代理设计模式的目的就是在不直接操作对象的前提下对对象进行访问,实现这个目的得方法就是为目标对象创建一个代理(Proxy),通过代理来访问目标对象.这个设计模式的优点是什么呢?代码重用,符合开闭原则. 这样解释可能会不太好理解,那么接下来就通俗的来说一下代理: 1,不知道你知不知道VPN(也就是俗称的科学上网),在党的领导下,为了营造我国健康…
[设计模式]Java设计模式 - 责任链模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 目录 [设计模式]Java设计模式 - 责任链模式 拦截器 1.接口提供 2.定义拦截器接口Interceptor 3.定义拦截器实现类 4.采用JDK动态代理的方式使用拦截器 5.实例 责任链模式 1.定义拦截器 2.责任链上使用拦截器实例 拦截器 拦截器可以拦截目标方法,进行一系列的操作.也可以取代代理对象的方法等功能.以下代码用JDK…
[设计模式]Java设计模式 - 动态代理 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 最近工作比较忙,没啥时间学习 目录 [设计模式]Java设计模式 - 动态代理 1.简介 2.JDK动态代理 (1).准备接口类 (2).jdk动态代理 (3).实例 3.CGLIB 动态代理 (1).加入CGLIB依赖 (2).准备实现类 (3).代理类 (4).实例 1.简介 动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运…