黑马程序猿_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_计算机基础(软件 ...
随机推荐
- SQL Server的事务处理与高级查询
6.高级查询与脚本 6.1子查询 位于SELECT查询中的SELECT查询. 6.11 标量表达式 select id,val,val-(select avg(val) from tbltest) f ...
- 安装freebsd9 出现 mountroot>怎么办
之前手欠把linux分区给删了想重装freebsd 重新进入的时候mbr提示grub信息 用PE把MBR删掉 之后再用freebsd光盘启动出现mountroot> 就用mountroot> ...
- 浏览器兼容性判定写法格式(ie)
条件注释判断浏览器<!--[if !IE]><!--[if IE]><!--[if lt IE 6]><!--[if gte IE 6]> <!- ...
- [jQuery编程挑战]006 生成一个倒计时效果
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8&quo ...
- dedecms设置文章分页后,标题会带有序号的解决方法
至于删除分页后标题后面的序号,找到include/arc.archives.class.php 打开,找到 if($i>1) $this->Fields['title'] = $this- ...
- ueditor的过滤、转义、格式丢失问题
1. 过滤 http://www.cnblogs.com/Olive116/p/3464495.html 2. 转义 http://segmentfault.com/q/101000000048928 ...
- 再次深入理解delphi的类
property WindowState: TWindowState read FWindowState write SetWindowState; {声明一个属性WindowState,它从字段FW ...
- hdu 1229 超级大水题
Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status Desc ...
- 如何把iOS代码编译为Android应用
新闻 <iPhone 6/6 Plus中国销量曝光:单月销量650万>:据iSuppli Corp.中国研究总监王阳爆料,iPhone 6和iPhone 6 Plus在国内受欢迎的情况大大 ...
- 【Java】理解 UDDI 注册中心的 WSDL
如何发布和查找 WSDL 服务描述 Web 服务描述语言(WSDL)有多种用法.特别是,根据应用程序的需要,WSDL 在 UDDI 注册中心有好几种使用方法.在这第 1 篇文章中(本系列共三篇),我们 ...