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.首先必 ...
随机推荐
- Transform控制的物体移动
Transform控制的物体移动:public class TKMove : MonoBehaviour { public float HSpeed; public float VSpeed; pri ...
- ZK典型应用场景
1. 数据发布/订阅--动态获取数据 2.Master选举 a). 利用Zk会保证无法重复创建一个已经存在的节点 b). 多个客户端同时创建,创建成功的即是master,并监控master节点,一旦m ...
- REST面向资源架构 RESTful架构
REST基础概念: 在REST中的一切都被认为是一种资源. 每个资源由URI标识. 使用统一的接口.处理资源使用POST,GET,PUT,DELETE操作类似创建,读取,更新和删除(CRUD)操作. ...
- ASP .NET 404 Not Found fontawesome-webfont.woff?v=4.0.3
解决Web部署 svg/woff/woff2字体 404错误最近项目中用到了fontawesome-webfont.svg等字体.部署项目后,发现没有<,+等符号,字体也不对,发现浏览器总是报找 ...
- centos6.3 配置防火墙,开启80端口、3306端口
vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火 ...
- wpf 查找父元素、子元素方法
1 /// <summary> 2 /// 根据类型查找子元素 3 /// </summary> 4 /// <typeparam name="T"& ...
- sass-基础
导入: sass的导入(@import)规则和CSS的有所不同,编译时会将@import的scss文件合并进来只生成一个CSS文件. 但是如果你在sass文件中导入css文件如@import 'res ...
- 诸葛io | 精细化运营分析解决方案
类型: 定制服务 软件包: business intelligence internet media solution collateral 联系服务商 产品详情 解决方案 概要 数据监测 ? 异常发 ...
- http相关文章目录
四种常见的 POST 提交数据方式 https://imququ.com/post/four-ways-to-post-data-in-http.html
- PHP:将json数据放进html标签中的详细讲解
1.在controller中调用某方法,得到最终的json数据.根据框架开发形式,将Json数据传入视图中 2.在视图中,我们放置一个hidden形式的标签,并获取到json数据 3.这时候,我们查看 ...