java动态代理-Proxy

代理模式的优点

(1)减少直接访问的复杂性。(2)对业务进行增强。

java代理的实现

接口:提供服务的抽象。举例工厂的功能(生产服装,饮料)等。

实体类(实现接口):提供实际的服务。举例服装厂,饮料厂等。

代理类(包含实体类或者实体类的父类):实现InvocationHandler,构造getProxy(Proxy构造代理的实现类)。举例本地的渠道商,他们有厂家的联系方式。(说明:Invoca:用作增强方法;Proxy:用作代理调度器(动态))

以上3条为代理模式实现的最最核心。

静态代理

代理类直接实现工厂接口和包含厂家,就可以直接调用厂家的方法实现外部的需求。适用于简单的场景,扩展和维护性差(违反开闭原则)。

动态代理

代理类包含实体类的父类或者Object,通过Proxy动态构造类,扩展和维护性好。

动态代理的表现形式:编写(代理类在添加需求的场景中无需修改),运行($Proxy+num的名称代表该类为动态代理类)。

动态代理的本质:在内存中根据代码自动生成字节码->类对象->并进行实例化-->gc。

扩展

java字节码来源:硬盘(java -jar ...); 网络(tomcat热更新); 内存(动态代理)。

java的本质只有Object,byte[]两种对象。

发布了20 篇原创文章 · 获赞 0 · 访问量 501

猜你喜欢

转载自blog.csdn.net/quietbxj/article/details/104487713