JDK的动态代理
作者:互联网
JDK的动态代理
设计模式中的代理模式大家必定听说也有所了解,分为静态代理和动态代理,而在实际的生产应用中,静态代理几乎没有用处,而动态代理则是各种框架的基石。今天我们了了解下JDK的动态代理如何实现。
1、新建被代理的接口
public interface MyInterface {
void print();
}
2、新建两个接口的具体实现类(被代理类)
public class MyImpl1 implements MyInterface{
@Override
public void print() {
System.out.println("被代理类1工作了.............");
}
}
public class MyImpl2 implements MyInterface{
@Override
public void print() {
System.out.println("被代理类2工作了.............");
}
}
3、代理工具类(核心代码)
public class ProxyUtils {
public static Object getProxy(Object object) {
return Proxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(),
(x, y, z) -> {
System.out.println("代理类的前置打印.......");
y.invoke(object, z);
return null;
});
}
}
4、测试结果
public class TestDnmicProxy {
public static void main(String[] args) {
MyInterface myImpl1 = new MyImpl1();
MyInterface myImpl2 = new MyImpl2();
MyInterface myInterface1 = (MyInterface) ProxyUtils.getProxy(myImpl1);
myInterface1.print();
System.out.println();
MyInterface myInterface2 = (MyInterface) ProxyUtils.getProxy(myImpl2);
myInterface2.print();
}
}
代理类的前置打印.......
被代理类1工作了.............
代理类的前置打印.......
被代理类2工作了.............
标签:JDK,object,代理,System,MyInterface,print,动态,public 来源: https://blog.csdn.net/m0_53085735/article/details/112995512