动态代理
来源:互联网 发布:长沙学历网络教育报名 编辑:程序博客网 时间:2024/06/05 02:17
增强一个类的方法有三种办法
1:继承 ————能够控制这个类的构造
2:装饰者模式——增强的类和被增强的类实现相同的接口,增强的类中获得被增强的类的引用, 缺点是接口中方法过多,只增强某个方法其他方法也要重写
3:动态代理———被增强的类实现了接口
代理的概述:
—–代理 , 实现接口, 本来能做的事 代理也能做还能增强
JDK的代理 Proxy
Object obj = (Object)Proxy.newProxyInstance(Object.class.getClassLoader,new Class[]{Object.class},hander);
三个参数分别是:类的加载器 , 被增强的类实现的所有接口 , 关键是第三个参数 InvocationHandler , 这是一个接口 , 得自己去实现
//接口public interface Waiter { void serve(); String sayhello(String name);}
//实现类public class Waitress implements Waiter { @Override public void serve() { System.out.println("服务中... ..."); } @Override public String sayhello(String name) { return "hello"+name; }}
//增强实现 @Test public void demo1(){ final Waiter waiter = new Waitress();// waiter.serve(); ClassLoader classLoader = waiter.getClass().getClassLoader(); Class[] interfaces = waiter.getClass().getInterfaces(); Waiter waiter1 = (Waiter)Proxy.newProxyInstance(classLoader, interfaces, new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("weixiao"); Object invoke = method.invoke(waiter, args); return invoke; } });// waiter1.serve(); String 张三 = waiter1.sayhello("张三"); System.out.println(张三); }}
阅读全文
1 0
- 代理-->静态代理&动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 8月1日总结
- 数据库性能优化二:数据库表优化
- Session 会话控制
- opencv 形态学处理——腐蚀
- CodeForces 825B:Five-In-a-Row(模拟)
- 动态代理
- leetcode-7&9
- spring拾遗(四)——自定义注解实现interceptor的指定拦截
- shader记录0801
- HDU 2955 Robberies(变形背包)
- Android与H5交互框架
- 20170801
- python 爬取 最好大学网 的大学排名
- 盒子模型