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工作了.............
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页