码迷,mamicode.com
首页 > 其他好文 > 详细

动态代理

时间:2020-02-10 18:09:12      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:invoke   开发   loader   objects   handler   类加载器   alt   ati   tcl   

一:什么是动态代理?为什么要用动态代理?

  在开发中,有时候会发现先前写好的类中的某个方法的原有功能不够用,需要增加额外功能。但是修改源代码增加功能是开发大忌,不到万不得已时不能这样做,这时候就需要动态代理来帮忙了。

  动态代理就是设计模式中的代理模式

 

二:动态代理概念:

  1. 真实对象:被代理的对象

  2. 代理对象:对真实对象的功能(方法)进行
  3. 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的

 

三:实现步骤:

  1. 代理对象和真实对象实现相同的接口

  2. 代理对象 = Proxy.newProxyInstance();
  3. 增强方法
  4. 使用代理对象调用方法。

 

四:代码实现:

  需求:computer对象里有个sell方法,里面实现了卖电脑的原始功能,现在想在sell方法里增加打八折的功能

  技术图片

  1. Proxy.newProxyInstance方法的三个参数:

                      1. 类加载器:真实对象.getClass().getClassLoader()
                      2. 接口数组:真实对象.getClass().getInterfaces()
                      3. 处理器:new InvocationHandler()
  2. InvocationHandler类的invoke的三个参数
                      1. o:代理对象
                      2. method:代理对象调用的方法,被封装为的对象
                      3. objects:代理对象调用的方法时,传递的实际参数

 

动态代理

标签:invoke   开发   loader   objects   handler   类加载器   alt   ati   tcl   

原文地址:https://www.cnblogs.com/lihui001/p/12291573.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!