静态代理和动态代理的区别,什么场景使用?
代理是一种常用的设计模式,目的是:为其他对象提供一个代理以控制对某个对象的访问,将两个类的关系解耦。代理类和委托类都要实现相同的接口,因为代理真正调用的是委托类的方法。
区别:
静态代理:由程序员创建或者是由特定工具创建,在代码编译时就确定了被代理的类是一个静态代理。静态代理通常只代理一个类;
动态代理:在代码运行期间,运用反射机制动态创建生成。动态代理代理的是一个接口下的多个实现类。
实现步骤:
package com.proxy.dongtai;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;//a.实现InvocationHandler接口创建自己的调用处理器
public class MyProxy implements InvocationHandler{Object object;public MyProxy() {}public void setObject(Object object) {this.object = object;}//生成代理类public Object getProxy(){//b.给Proxy类提供ClassLoader和代理接口类型数组创建动态代理类
// c.利用反射机制得到动态代理类的构造函数
// d.利用动态代理类的构造函数创建动态代理类对象return Proxy.newProxyInstance(object.getClass().getClassLoader(),object.getClass().getInterfaces(),this);}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("Animal_proxy_111");Object invoke = method.invoke(object, args);System.out.println("Animal_proxy_222");return invoke;}
}
使用场景:Retrofit中直接调用接口的方法;Spring的AOP机制。
静态代理和动态代理的区别,什么场景使用?相关推荐
- 代理模式详解(静态代理和动态代理的区别以及联系)
原文链接:https://www.cnblogs.com/takumicx/p/9285230.html 1. 前言 代理模式可以说是生活中处处可见.比如说在携程上定火车票,携程在这里就起到了一个代理 ...
- 静态代理,cglib动态代理,jdk动态代理区别以及流程详解
1.静态代理 静态代理使用的是代理设计模式,不讲高大上的思想,我们直接实战 这是动物接口,其中有一个吃饭方法 这是其中的一只动物,实现了动物接口,覆盖了吃饭方法 现在我们思考,我想要给猫找一个代理,希 ...
- JAVA静态代理和动态代理的区别?
代理简述 代理是英文 Proxy 翻译过来的.我们在生活中见到过的代理,大概最常见的就是朋友圈中卖面膜的同学了. 他们从厂家拿货,然后在朋友圈中宣传,然后卖给熟人. 按理说,顾客可以直接从厂家购买产品 ...
- Java设计模式学习06——静态代理与动态代理(转)
原地址:http://blog.csdn.net/xu__cg/article/details/52970885 一.代理模式 为某个对象提供一个代理,从而控制这个代理的访问.代理类和委托类具有共同的 ...
- SpringAOP静态代理和动态代理
代理模式应用于SpringAOP. SpringAOP.即面向切面的编程范式.多用于权限控制,异常处理,日志管理等场景.主要作用是分离功能性需求和非功能性需求,减少代码冗余.我们在使用的时候可以集中处 ...
- Java静态代理、动态代理与CGLib代理
java的动态代理举足轻重,它同反射原理一直是许多框架的底层实现.今天唠一下. 一.代理模式 代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标 ...
- 【学习笔记】结合代码理解设计模式 —— 代理模式(静态代理、动态代理、延伸)
文章目录 什么是代理模式 一. 代理模式简介 二. 静态代理模式 三. 动态代理模式 万能模版 前言:笔记基于狂神设计模式视频.<大话设计模式>观后而写 (最近一直在更新之前的刷题博客,今 ...
- 红橙Darren视频笔记 代理模式 动态代理和静态代理
红橙Darren视频笔记 代理模式 动态代理和静态代理(Android API 25) 关于代理模式我之前有过相关的介绍: https://blog.csdn.net/u011109881/artic ...
- Spring系列之静态代理、动态代理、cglib代理与Spring AOP的处理
本章内容 代理的概念及理解 如何实现静态代理 如何实现动态代理 静态代理与动态代理有什么区别与优缺点 JDK动态代理如何实现 cglib动态代理如何实现 JDK动态代理与cglib动态代理的区别 Sp ...
- Java设计模式(五)代理设计模式—静态代理—JDK动态代理—Cglib动态代理
文章目录 什么是代理模式 代理模式应用场景 代理的分类 静态代理 什么是静态代理 深入解析静态代理 小结 动态代理 什么是动态代理 JDK动态代理 原理和实现方式 代码实现 优缺点 Cglib动态代理 ...
最新文章
- AI 能匹敌程序员了吗?OpenAI 新研究展​示 NLP 大模型的局限性
- 发掘数据中的信息 -- 数据探索之描述性统计
- Caffe代码导读(0):路线图
- react --- render持续调用解决方案
- 论文阅读 - Group Normalization
- 二进制的认识、进制之间的转换、计算机储存单位
- Java笔记-使用ServerSocket构建HTTP服务器
- Bezier(贝塞尔)曲线的轨迹规划在自动驾驶中的应用(一)
- 基于libpcan库can总线操作的Barrett 机械手控制及腕部六维力传感器驱动
- avs3 ts格式封装 标准_Go time.RFC3339 时间格式化
- 微信生成海报 服务器性能,微信小程序生成清晰海报
- 185电缆的接法图解_三相电缆线的接法图解
- 最简单易学的手机打字方法
- 自动安装第三方库python,python第三方库自动安装脚本
- python c++情侣网名是什么意思_网友:c++与Python,究竟谁才是大哥?
- BZOJ-4811: [Ynoi2017]由乃的OJ (树链剖分 线段树维护区间操作值 好题)
- 软件工程实验报告 一
- 不同型号的二极管模块并联_2.5 变频器的并联
- 雕刻机主轴电机拆卸步骤方法
- 揭秘5G,带你了解通信发展
热门文章
- spyder安装pyqt5
- html对话框取消确定,alert 确定 取消
- 【SQL】用SQL语句表示同比和环比
- 简单记录如何通过 VS Code 和 Auto Build Marlin编译和更新marlin固件
- 即将首发 | 业界首个零售数字化创新白皮书,解锁全链路数字化致胜秘籍
- 关于DES加密内部收费版
- webp 图片格式_使用WebP图像格式的完整指南
- UnicodeDecodeError: 'gbk' codec can't decode byte 0xfe in position 575056: illegal multibyte sequenc
- 创建springboot项目后运行,找不到或无法加载主类 com.itheima.Application,原因: java.lang.ClassNotFoundException
- Unity做MMD(一)资源处理