全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 中动态代理详解及实例

Java动态代理相关

先来看静态代理模式代码:

package test; 
 
public interface Subject 
{ 
 public void doSomething(); 
} 

package test; 
public class RealSubject implements Subject{ 
 public void doSomething() { 
 System.out.println( "call doSomething()" ); 
 } 
} 

package test; 
public class SubjectProxy implements Subject { 
 Subject subimpl = new RealSubject(); 
 public void doSomething() { 
 subimpl.doSomething(); 
 } 
} 
package test; 
public class TestProxy { 
 public static void main(String args[]) { 
 Subject sub = new SubjectProxy();  
 sub.doSomething(); 
 } 
} 

刚开始我会觉得SubjectProxy定义出来纯属多余,直接实例化实现类完成操作不就结了吗?后来随着业务庞大,你就会知道,实现proxy类对真实类的封装对于粒度的控制有着重要的意义。但是静态代理这个模式本身有个大问题,如果类方法数量越来越多的时候,代理类的代码量是十分庞大的。所以引入动态代理来解决此类问题。

先看代码:

package test; 
 
public interface Subject 
{ 
 public void doSomething(); 
} 
package test; 
public class RealSubject implements Subject { 
 public void doSomething() { 
 System.out.println( "call doSomething()" ); 
 } 
} 
package test; 
import java.lang.reflect.InvocationHandler; 
import java.lang.reflect.Method; 
import java.lang.reflect.Proxy; 
public class ProxyHandler implements InvocationHandler { 
 private Object tar; //绑定委托对象,并返回代理类 
 public Object bind(Object tar) { 
 this.tar = tar; //绑定该类实现的所有接口,取得代理类 
 return Proxy.newProxyInstance(tar.getClass().getClassLoader(), tar.getClass().getInterfaces(), this); 
 } 
 public Object invoke(Object proxy , Method method , Object[] args)throws Throwable { 
 Object result = null; 
 //这里就可以进行所谓的AOP编程了 
 //在调用具体函数方法前,执行功能处理 
 result = method.invoke(tar,args); 
 //在调用具体函数方法后,执行功能处理 
 return result; 
 } 
} 
public class TestProxy { 
public static void main(String args[]) { 
 ProxyHandler proxy = new ProxyHandler(); //绑定该类实现的所有接口 
 Subject sub = (Subject) proxy.bind(new RealSubject()); 
 sub.doSomething(); 
 } 
} 

看完代码,现在我来回答,动态代理的作用是什么:

Proxy类的代码量被固定下来,不会因为业务的逐渐庞大而庞大;

可以实现AOP编程,实际上静态代理也可以实现,总的来说,AOP可以算作是代理模式的一个典型应用;

解耦,通过参数就可以判断真实类,不需要事先实例化,更加灵活多变。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 中动态代理  # 动态代理详解  # 详解java JDK 动态代理类分析(java.lang.reflect.Proxy)  # Java动态代理分析及理解  # java 中动态代理(JDK  # cglib)实例代码  # java 动态代理的方法总结  # 深度剖析java中JDK动态代理机制  # Java 动态代理深入理解  # JAVA动态代理模式(从现实生活角度理解代码原理)  # java 代理模式及动态代理机制深入分析  # Java 动态代理与CGLIB详细介绍  # Java静态代理和动态代理总结  # 深入理解java动态代理机制  # Java动态代理分析及简单实例  # java 1.8 动态代理源码深度分析  # 绑定  # 可以实现  # 就可以  # 我会  # 有个  # 不需要  # 我来  # 希望能  # 不就  # 看完  # 此类  # 刚开始  # 谢谢大家  # 你就会  # 大问题  # 先看  # 结了  # println  # call  # implements 


相关文章: 中山网站推广排名,中山信息港登录入口?  如何通过老薛主机一键快速建站?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  制作销售网站教学视频,销售网站有哪些?  如何通过商城免费建站系统源码自定义网站主题?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  定制建站如何定义?其核心优势是什么?  建站之星导航菜单设置与功能模块配置全攻略  如何挑选高效建站主机与优质域名?  建站之星展会模版如何一键下载生成?  韩国服务器如何优化跨境访问实现高效连接?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  公众号网站制作网页,微信公众号怎么制作?  如何自定义建站之星模板颜色并下载新样式?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  移民网站制作流程,怎么看加拿大移民官网?  金*站制作公司有哪些,金华教育集团官网?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何在香港免费服务器上快速搭建网站?  如何高效完成独享虚拟主机建站?  如何挑选最适合建站的高性能VPS主机?  如何通过服务器快速搭建网站?完整步骤解析  如何使用Golang安装API文档生成工具_快速生成接口文档  h5在线制作网站电脑版下载,h5网页制作软件?  建站主机核心功能解析:服务器选择与网站搭建流程指南  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何用PHP快速搭建高效网站?分步指南  如何在阿里云完成域名注册与建站?  如何快速搭建支持数据库操作的智能建站平台?  如何用狗爹虚拟主机快速搭建网站?  高端建站如何打造兼具美学与转化的品牌官网?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  建站之星如何修改网站生成路径?  焦点电影公司作品,电影焦点结局是什么?  如何在IIS服务器上快速部署高效网站?  建站主机选哪种环境更利于SEO优化?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  如何确保FTP站点访问权限与数据传输安全?  建站之星好吗?新手能否轻松上手建站?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  公司门户网站制作流程,华为官网怎么做?  制作表格网站有哪些,线上表格怎么弄?  为什么Go需要go mod文件_Go go mod文件作用说明  建站之星如何优化SEO以实现高效排名?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。