ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JDK的动态代理

2021-01-22 18:30:32  阅读:152  来源: 互联网

标签:JDK object 代理 System MyInterface print 动态 public


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有