Java 动态代理
来源:互联网 发布:单片机 仿真实例 微盘 编辑:程序博客网 时间:2024/06/15 00:57
Interface
public interface 租房 { void 看房(double money); void 租房(double money);}
房东
public class 房东 implements 租房{ @Override public void 看房(double money) { System.out.println("房东收到的看房费用:" + money); } @Override public void 租房(double money) { System.out.println("房东收到的租房费用:" + money); }}
静态代理
总结
- 租房 接口协议
- 房东遵守 租房 接口协议,并将租房的动作交给 中介 代理
- 中介遵守 租房 接口协议,接受房东的中代理
- 房客找中介租房,中介持有房东的租房代理权,并从中抽成
中介
public class 中介 implements 租房 { private 租房 zf; public 中介(租房 zf) { this.zf = zf; } @Override public void 看房(double money) { Double d = money / 2; System.out.println("中介抽成:" + d); zf.看房(d); } @Override public void 租房(double money) { Double d = money / 2; System.out.println("中介抽成:" + d); zf.租房(d); }}
静态代理的房客
public class 房客 { @Test public void staticModel(){ 租房 房东 = new 房东(); 租房 中介 = new 中介(房东); 中介.看房(100); 中介.租房(1000); /* 中介抽成:50.0 房东收到的看房费用:50.0 中介抽成:500.0 房东收到的租房费用:500.0 */ }}
动态代理
总结
- 租房 接口协议
- 房东遵守 租房 接口协议
- 少去中介的类
- 房东使用动态代理模式,将房屋租给房客
动态代理的房客
public class 房客 { @Test public void dynamicModel(){ 租房 房东 = new 房东(); // Proxy.newProxyInstance():产生代理类的实例。仅能代理实现至少一个接口的类 // 参数: // ClassLoader:类加载器。固定写法,和被代理类使用相同的类加载器即可。 // Class[] interface:代理类要实现的接口。固定写法,和被代理类使用相同的接口即可。 // InvocationHandler:策略(方案)设计模式的应用。如何代理? 租房 proxy = (租房) Proxy.newProxyInstance( 房东.getClass().getClassLoader(), 房东.getClass().getInterfaces(), new InvocationHandler() { // InvocationHandler中的invoke方法:调用代理类的任何方法,此方法都会执行 // 参数: // Object proxy:代理对象本身的引用。一般用不着。 // Method method:当前调用的方法。 // Object[] args:当前方法用到的参数 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Double d = (Double) args[0] / 2; System.out.println("中介抽成:" + d); Object invoke = method.invoke( 房东, new Object[]{d} ); System.out.println("后续事情"); return invoke; } } ); proxy.租房(50); proxy.租房(1000); /* 中介抽成:25.0 房东收到的租房费用:25.0 后续事情 中介抽成:500.0 房东收到的租房费用:500.0 后续事情 */ }}
阅读全文
0 0
- Java 代理,动态代理
- [Java] Java 动态代理
- java代理及动态代理
- java代理模式--动态代理
- Java静态代理、动态代理
- Java 代理之 动态代理
- Java 代理与动态代理
- java静态代理,动态代理
- 代理模式&java动态代理
- Java代理与动态代理
- Java静态代理动态代理
- JAVA代理模式--动态代理
- java 代理和动态代理
- JAVA动态代理 代理模式
- Java动态代理--jdk代理
- Java动态代理--cglib代理
- Java 代理与动态代理
- java代理模式-动态代理
- 如何设计一个交互好转化率高的表单
- 如何在vue项目中使用md5.js及base64.js
- [DevExpress]GridControl主从表显示
- LintCode560:各位相加
- spring实现ajax
- Java 动态代理
- 记一次简单的hdfs备份恢复过程
- 论文阅读学习
- js中闭包及其用途
- linux虚拟内存和物理内存
- Solr学习总结(一)-Solr-5.5.4部署
- python可视化-matplotlib学习2
- dataTable分页
- NOIP 2017 PJ