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小时内与您取得联系。