黑马程序猿_Java 代理机制学习总结
-------<a href="http://www.itheima.com/"">android培训</a>、<a
href="http://www.itheima.com/" ">java培训</a>期待与您交流!
----------
黑马程序猿_Java 代理机制学习总结
在编敲代码时,除了要解决核心业务逻辑时还要编写一些与核心业务逻辑相关的系统服务代码。如日志,安全等代码。在没有使用java代理机制时。仅仅能将其与业务代码放置在了一起。
但这是于java OOP思想是冲突的。
加深了程序间的耦合性。
引入了代理机制就能够避免了这种问题。
我们能够创建某个类的代理类。
打个比方。比方在写代码时我希望监察出某个类的某个方法的执行时间。等项目完毕交给客户时我又得必须把监视程序效率的代码去掉。
这时用代理机制就方便及了。我能够再程序中引用指向该类的代理类。
代理类中引用了被代理类,并加上了监察程序效率执行时间的代码。等项目完毕交个客户时,仅仅需在程序中把引用指向被代理类就可以。根本不须要改变源码。
AOP 面向切面编程
在编写应用程序时,发现程序中会穿插非常多关于日志,安全等相关的代码中。这些代码并非核心业务代码。却依赖核心业务代码。所以被放置在了业务代码里。
就像一个横穿在程序里的一个切面。
这些与核心业务混在一起的系统服务代码加深了代码与代码之间的耦合性。
AOP 面向切面编程就是要将这些代码从程序中抽离出来(抽离仅仅是从效果上来说),进行模块化。
代理类的特点:
1.代理与被代理类有同样的接口。
假设原类没有接口,能够使用第三方类库ELGB中的接口。
2.代理类与被代理类有同样的方法。代理类的系统代码是基于被代理类的方法的。能够将代理类的系统代码放在代理类的方法之前。之后,前后,和代理类的catch语句块中。
动态代理类的创建
在写一个项目时,往往须要的代理类是相当多的。假设都是程序猿手动的自己去写代理类。是相当要命的。Java提供了自己主动传建代理类的技术。能够动态的创件一个类的代理类。
Proxy 代理类
Proxy 提供用于创建动态代理类和实例的静态方法,它还是由这些方法创建的全部动态代理类的超类。
通常依据其的一个静态方法得到一个类的代理类
static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
返回一个指定接口的代理类实例,该接口能够将方法调用指派到指定的调用处理程序
參数解释
ClassLoader Loader:为生成的代理类实例指定一个类载入器,通常指定为其接口的类载入器。
Class<?>[] Interfaces:代理类与被代理类共同的接口。
InvocationHandler h:?
InvocationHandler 是代理实例的调用处理程序 实现的接口。
该接口仅仅有一个要被实现的方法
Object invoke(Object proxy, Method method, Object[] args)
在代理实例上处理方法调用并返回结果
在该方法里就能够调用被代理对象,加上代理类的系统代码,完毕代理类的代理目的。
以下代码演示自己主动创建一个代理类,其代理目的是算出被代理的一个方法的时间。
-------<a href="http://www.itheima.com/"">android培训</a>、<a
href="http://www.itheima.com/" ">java培训</a>期待与您交流!
----------
黑马程序猿_Java 代理机制学习总结的更多相关文章
- 黑马程序猿——25,打印流,合并流,对象序列化,管道流,RandomAccessFile
------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- 黑马程序猿————Java基础日常笔记---反射与正則表達式
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...
- 黑马程序猿——15,String,StringBuffer,基本数据类型包装对象
------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- 黑马程序员_java基础笔记(13)...类加载器和代理
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 1,类加载器.2,代理. 1,类加载器. Java虚拟机中可以安装多个类加载器,系 ...
- 【黑马程序员C++ STL】学习记录
黑马程序员 2017 C++ STL 教程(STL 部分已完结) 基于黑马STL课程整理:黑马程序员2017C++STL教程 视频链接 专栏:本STL专栏目录 文章目录 黑马程序员 2017 C++ ...
- 黑马程序员_Java基础:反射机制(Reflection)总结
------- android培训.java培训.期待与您交流! ---------- 反射在java中有非常重大的意义,它是一种动态的相关机制,可以于运行时加载.探知.使用编译期间完全未知的clas ...
- 黑马程序员_Java基本数据的自动拆装箱及享元设计模式视频学习笔记
------- android培训.java培训.期待与您交流! ---------- 装箱:把基本数据类型装成java类(被托管?). 拆箱:把java类拆成基本数据类型(取消托管? ...
- 黑马程序猿_ 利用oc的协议实现代理模式
先说下代理模式是什么吧 定义: 为其它对象提供一种代理以控制对这个对象的訪问.在某些情况下,一个对象不适合或者不能直接引用还有一个对象 而代理对象能够在client和目标对象之间起到中介的作用. 在看 ...
- 黑马程序员_Java基础视频-深入浅出精华版--视频列表
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
随机推荐
- ccui.ScrollView 扩展
大多数游戏都有背包这个东西. 道具列表通常用 ScrollView 来实现. 这个ScrollView内部有一个Layout, 滑动都是由移动这个Layout来实现. 道具摆放通常从上往下, 从左到右 ...
- DX笔记之一---Direct3D基础
一.预备知识 1.表面 表面就是Direct3D用于储存2D图像数据的一个像素矩阵.width和height以像素为单位,pitch以字节单位,用接口IDirect3DSurface来描述表面 Loc ...
- absolut绝对定位的非绝对定位用法
一.absolute绝对定位的流行用法 一般而言,我们会用absolute绝对定位做什么呢?就是绝对定位,顾名思意,定死在某个位置上.例如,lightbox效果就是使用的绝对定位,例如新浪微博的弹出提 ...
- js以json形式提交数据,后台接受
$("#savename").click(function(){ var fananname=$("#editname").val(); var jsonLis ...
- jquery 实现的一款超简单的图片切换功能
<html><head> <meta http-equiv="Content-Type" content="text/html; chars ...
- TCP协议握手与分手
TCP(Transmission Control Protocol) 传输控制协议 TCP的7次握手可以理解为3次握手和4次分手. TCP状态转换图,如下: 这个图N多人都知道,它对排除和定位网络或系 ...
- python自动开发之第十三天
1.Paramiko模块下的demo.py程序 前面利用Python中的Paramiko模块可以进行SSH的连接,以及用来传送文件(SFTP),但是无论是哪一种方式,连接都是短暂的,并非是长连 ...
- 测试通过Word直接发布博文
这里是来自word 2013的一篇测试文章. 测试直接通过Word自带的bloger功能发布博客文章. 这里插入一张图片
- 【Linux】基础配置-修改命令提示符的风格
1,效果图: [groot]$ 2,设置步骤: 编辑~/.bashrc文件,在最后增加设置行: #显示当面目录的最后一层目录#PS1='\[\e[32m\][\u@\h \W]$\[\e[m\]'#只 ...
- 设计模式——如何避免在OO设计中违反依赖倒置原则
1 变量不可以包含具体类的引用.一旦new,就对具体类产生依赖,用工厂模式来避开. 2 类不要派生至具体类.用派生抽象类避开. 3 不要覆盖基类已经实现的方法.基类中已实现的方法应该由所有子类共享.