代理模式:http://yangguangfu.iteye.com/blog/815787

//接口
public interface Moveable {
void move();
}
//汽车类
public class Car implements Moveable {
@Override
public void move() {
//实现开车
try {
Thread.sleep(new Random().nextInt(1000));
System.out.println("汽车行驶中....");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//汽车类的代理类
public class CarTimeProxy implements Moveable {
public CarTimeProxy(Moveable m) {
super();
this.m = m;
}
private Moveable m;
@Override
public void move() {
long starttime = System.currentTimeMillis();
System.out.println("汽车开始行驶....");
m.move();
long endtime = System.currentTimeMillis();
System.out.println("汽车结束行驶.... 汽车行驶时间:"
+ (endtime - starttime) + "毫秒!");
}
}
=============================================================================
内部原理:
代理类$proxy有所有的接口里的方法,每个方法的实现都是调用myInvocationHandler的invoke方法:
h.invoke(this,此方法名)
=============================================================================
JDK的动态代理:
https://juejin.im/entry/5b9ccbb9e51d450e9874cc58
Mybatis的动态代理:
https://mp.weixin.qq.com/s?__biz=MzI4OTA3NDQ0Nw==&mid=2455545283&idx=1&sn=305c1bfc2b4878a61897b8e574cd2de7&chksm=fb9cb9a3cceb30b5b16c488baabdf9cbc42891866029a18be0a9e092ebda3726f10b7bcbe078&scene=21#wechat_redirect
反射:
https://wenshixin.gitee.io/blog/2018/09/04/Java%E8%BF%9B%E9%98%B6-%E5%8F%8D%E5%B0%84/
本文详细介绍了代理模式的概念及其在Java中的具体实现方式,包括接口定义、汽车类与代理类的实现,以及如何通过代理模式记录汽车行驶的时间。同时,还提供了JDK动态代理、Mybatis动态代理及反射等相关知识的链接。
6247

被折叠的 条评论
为什么被折叠?



