JDK 动态代理 讨债实例
现弄一个讨债接口
package cn.itcast.g_dongtaidaili; public interface Taozhai { void taozhai();
}
再弄一个讨债实现类
package cn.itcast.g_dongtaidaili; public class Taozhai_Impl implements Taozhai{ @Override
public void taozhai() { System.out.println("把钱还给我~~~");
} }
讨债力度太弱,根本讨不回
所以请讨债公司代理讨债
package cn.itcast.g_dongtaidaili; import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; import org.junit.Test; public class CompanyProxyTaozhai implements Taozhai { Taozhai_Impl taozhai=new Taozhai_Impl(); @Override
public void taozhai() { Taozhai strong_taozhai = (Taozhai) Proxy.newProxyInstance(cn.itcast.g_dongtaidaili.Taozhai_Impl.class.getClassLoader(),
new Class[]{cn.itcast.g_dongtaidaili.Taozhai.class}, new InvocationHandler() { @Override
public Object invoke(Object obj, Method method, Object[] param) throws Throwable { System.out.println("讨债公司利用恐吓 威胁 暴力殴打 打砸等方式逼债");
method.invoke(taozhai, param);
System.out.println("讨债成功,讨债公司分取利益");
return null;
}
}); strong_taozhai.taozhai();
} }
与装饰者设计模式相同,代理讨债也实现了讨债接口,植入原始讨债对象反射出原始讨债方法并进行增强,返回增强的讨债对象.
实现类
package cn.itcast.g_dongtaidaili; public class DemoTaozhai { public static void main(String[] args) { CompanyProxyTaozhai taozhai=new CompanyProxyTaozhai();
taozhai.taozhai();
} }
结果演示
new Class[]{cn.itcast.g_dongtaidaili.Taozhai.class} 第二个参数是接口数组也可以用taozhai.getClass().getInterfaces() 都是得到接口数组 ,为什么是数组,因为实现类可以实现多个接口
JDK 动态代理 讨债实例的更多相关文章
- SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架
1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...
- 静态代理和jdk动态代理
要说动态代理,必须先聊聊静态代理. 静态代理 假设现在项目经理有一个需求:在项目现有所有类的方法前后打印日志. 你如何在不修改已有代码的前提下,完成这个需求? 我首先想到的是静态代理.具体做法是: 1 ...
- JDK动态代理实例
最近看<深入浅出MyBatis技术原理与实战>这本书时,里面讲到Mapper接口的内部实现是通过JDK动态代理生成实现类,联想到之前看<SPRING技术内幕>这本书里也常常提到 ...
- JDK动态代理
一.基本概念 1.什么是代理? 在阐述JDK动态代理之前,我们很有必要先来弄明白代理的概念.代理这个词本身并不是计算机专用术语,它是生活中一个常用的概念.这里引用维基百科上的一句话对代理进行定义: A ...
- 静态代理和利用反射形成的动态代理(JDK动态代理)
代理模式 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 静态代理 1.新建 ...
- Spring中的JDK动态代理
Spring中的JDK动态代理 在JDK1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在动态代理是实现AOP的绝好底层 ...
- Java中的JDK动态代理
所谓代理,其实就是相当于一个中间人,当客户端需要服务端的服务时,不是客户直接去找服务,而是客户先去找代理,告诉代理需要什么服务,然后代理再去服务端找服务,最后将结果返回给客户. 在日常生活中,就拿买火 ...
- JDK动态代理与CGLib动态代理
1.JDK动态代理 JDK1.3以后java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,动态代理是实现AOP的绝好底层技术. JDK的动态代理主要涉及到java.lang.reflect ...
- java jdk动态代理
在面试的时候面试题里有一道jdk的动态代理是原理,并给一个事例直接写代码出来,现在再整理一下 jdk动态代理主要是想动态在代码中增加一些功能,不影响现有代码,实现动态代理需要做如下几个操作 1.首先必 ...
随机推荐
- inventor安装失败怎样卸载安装inventor 2017?
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- CAD安装失败怎样卸载CAD 2018?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- Murano Weekly Meeting 2016.07.19
Meeting time: 2016.July.19 1:00~2:00 Chairperson: Kirill Zaitsev, from Mirantis Meeting summary: 1. ...
- [API]API运用实例
首先,在百度API:http://apistore.baidu.com/查找自己想用的api接口,例如:翻译: 利用postman工具进行测试: 返回结果为JSON字符串: { "errNu ...
- [PHP]对象数组和普通数组总结
1.碰到前台将JSON格式数据传递到服务器后台,经php的json_decode函数转换成的数组由于为对象数组,php程序无法对数据进行正常处理的情况,为此需要开发一个PHP回调函数(objarray ...
- 如何将运维的报警做成运营的报警--Java后端架构
转:http://mp.weixin.qq.com/s?__biz=MzI4OTU3ODk3NQ==&mid=2247483970&idx=1&sn=2a00acfb25f0c ...
- 方法引用(Method reference)和构造器引用(construct reference)
Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用 方法引用语法格式有以下三种: objectName::instanceMethod ClassName::staticMethod C ...
- 如何使用JWT来实现单点登录功能
我们平时自己开发项目,分布式的结构时,访问量不大,但是又不想搭建redis服务器,这时我觉得jwt不错. 个人理解,jwt就是类似于一把锁和钥匙,客户来租房(登录),我们需要给他进来(第一次登录)登记 ...
- Oracle 数据库 导入导出空表解决办法!
expdp导出:(打开CMD) 先创建(任意盘符):\oracle_data 文件夹 1.sqlplus / as sysdba;2.create or replace directory d_nam ...
- WebView加载页面,带链接的Img在页面第一次加载时无法显示的问题
在做一个App的过程中,用到WebView来显示几个页面.在这个过程中发现有些页面的显示出现了异常:页面中的Img链接在页面第一次加载时无法正常显示图片,退出页面再次进入后可正常显示.开始以为是Web ...