代理是一种常用的设计模式,目的是:为其他对象提供一个代理以控制对某个对象的访问,将两个类的关系解耦。代理类和委托类都要实现相同的接口,因为代理真正调用的是委托类的方法。

区别:
静态代理:由程序员创建或者是由特定工具创建,在代码编译时就确定了被代理的类是一个静态代理。静态代理通常只代理一个类;
动态代理:在代码运行期间,运用反射机制动态创建生成。动态代理代理的是一个接口下的多个实现类。

实现步骤:

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机制。

静态代理和动态代理的区别,什么场景使用?相关推荐

  1. 代理模式详解(静态代理和动态代理的区别以及联系)

    原文链接:https://www.cnblogs.com/takumicx/p/9285230.html 1. 前言 代理模式可以说是生活中处处可见.比如说在携程上定火车票,携程在这里就起到了一个代理 ...

  2. 静态代理,cglib动态代理,jdk动态代理区别以及流程详解

    1.静态代理 静态代理使用的是代理设计模式,不讲高大上的思想,我们直接实战 这是动物接口,其中有一个吃饭方法 这是其中的一只动物,实现了动物接口,覆盖了吃饭方法 现在我们思考,我想要给猫找一个代理,希 ...

  3. JAVA静态代理和动态代理的区别?

    代理简述 代理是英文 Proxy 翻译过来的.我们在生活中见到过的代理,大概最常见的就是朋友圈中卖面膜的同学了. 他们从厂家拿货,然后在朋友圈中宣传,然后卖给熟人. 按理说,顾客可以直接从厂家购买产品 ...

  4. Java设计模式学习06——静态代理与动态代理(转)

    原地址:http://blog.csdn.net/xu__cg/article/details/52970885 一.代理模式 为某个对象提供一个代理,从而控制这个代理的访问.代理类和委托类具有共同的 ...

  5. SpringAOP静态代理和动态代理

    代理模式应用于SpringAOP. SpringAOP.即面向切面的编程范式.多用于权限控制,异常处理,日志管理等场景.主要作用是分离功能性需求和非功能性需求,减少代码冗余.我们在使用的时候可以集中处 ...

  6. Java静态代理、动态代理与CGLib代理

    java的动态代理举足轻重,它同反射原理一直是许多框架的底层实现.今天唠一下. 一.代理模式 代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标 ...

  7. 【学习笔记】结合代码理解设计模式 —— 代理模式(静态代理、动态代理、延伸)

    文章目录 什么是代理模式 一. 代理模式简介 二. 静态代理模式 三. 动态代理模式 万能模版 前言:笔记基于狂神设计模式视频.<大话设计模式>观后而写 (最近一直在更新之前的刷题博客,今 ...

  8. 红橙Darren视频笔记 代理模式 动态代理和静态代理

    红橙Darren视频笔记 代理模式 动态代理和静态代理(Android API 25) 关于代理模式我之前有过相关的介绍: https://blog.csdn.net/u011109881/artic ...

  9. Spring系列之静态代理、动态代理、cglib代理与Spring AOP的处理

    本章内容 代理的概念及理解 如何实现静态代理 如何实现动态代理 静态代理与动态代理有什么区别与优缺点 JDK动态代理如何实现 cglib动态代理如何实现 JDK动态代理与cglib动态代理的区别 Sp ...

  10. Java设计模式(五)代理设计模式—静态代理—JDK动态代理—Cglib动态代理

    文章目录 什么是代理模式 代理模式应用场景 代理的分类 静态代理 什么是静态代理 深入解析静态代理 小结 动态代理 什么是动态代理 JDK动态代理 原理和实现方式 代码实现 优缺点 Cglib动态代理 ...

最新文章

  1. AI 能匹敌程序员了吗?OpenAI 新研究展​示 NLP 大模型的局限性
  2. 发掘数据中的信息 -- 数据探索之描述性统计
  3. Caffe代码导读(0):路线图
  4. react --- render持续调用解决方案
  5. 论文阅读 - Group Normalization
  6. 二进制的认识、进制之间的转换、计算机储存单位
  7. Java笔记-使用ServerSocket构建HTTP服务器
  8. Bezier(贝塞尔)曲线的轨迹规划在自动驾驶中的应用(一)
  9. 基于libpcan库can总线操作的Barrett 机械手控制及腕部六维力传感器驱动
  10. avs3 ts格式封装 标准_Go time.RFC3339 时间格式化
  11. 微信生成海报 服务器性能,微信小程序生成清晰海报
  12. 185电缆的接法图解_三相电缆线的接法图解
  13. 最简单易学的手机打字方法
  14. 自动安装第三方库python,python第三方库自动安装脚本
  15. python c++情侣网名是什么意思_网友:c++与Python,究竟谁才是大哥?
  16. BZOJ-4811: [Ynoi2017]由乃的OJ (树链剖分 线段树维护区间操作值 好题)
  17. 软件工程实验报告 一
  18. 不同型号的二极管模块并联_2.5 变频器的并联
  19. 雕刻机主轴电机拆卸步骤方法
  20. 揭秘5G,带你了解通信发展

热门文章

  1. spyder安装pyqt5
  2. html对话框取消确定,alert 确定 取消
  3. 【SQL】用SQL语句表示同比和环比
  4. 简单记录如何通过 VS Code 和 Auto Build Marlin编译和更新marlin固件
  5. 即将首发 | 业界首个零售数字化创新白皮书,解锁全链路数字化致胜秘籍
  6. 关于DES加密内部收费版
  7. webp 图片格式_使用WebP图像格式的完整指南
  8. UnicodeDecodeError: 'gbk' codec can't decode byte 0xfe in position 575056: illegal multibyte sequenc
  9. 创建springboot项目后运行,找不到或无法加载主类 com.itheima.Application,原因: java.lang.ClassNotFoundException
  10. Unity做MMD(一)资源处理