目录

静态代理和动态代理的区别

静态代理

静态代理的特点

动态代理

动态代理的特点


静态代理和动态代理的区别

1、静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。

2、静态代理事先知道要代理的是什么,而动态代理不知道要代理什么东西,只有在运行时才知道。

3、动态代理是实现JDK里的InvocationHandler接口的invoke方法,但注意的是代理的是接口,也就是你的业务类必须要实现接口,通过Proxy里的newProxyInstance得到代理对象。

4、还有一种动态代理CGLIB,代理的是类,不需要业务类继承接口,通过派生的子类来实现代理。通过在运行时,动态修改字节码达到修改类的目的。

静态代理

​ 某个对象提供一个代理,代理角色固定,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。

静态代理的特点

1、目标角色固定

2、在应用程序执行前就得到目标角色

3、代理对象会增强目标对象的行为

4、有可能存在多个代理 引起"类爆炸"(缺点)

动态代理

​ 相比于静态代理,动态代理在创建代理对象上更加的灵活,动态代理类的字节码在程序运行时,由Java反射机制动态产生。它会根据需要,通过反射机制在程序运行期,动态的为目标对象创建代理对象,无需程序员手动编写它的源代码。

动态代理的特点

1、目标对象不固定

2、在应用程序执行时动态创建目标对象

3、代理对象会增强目标对象的行为

静态代理和动态代理的区别是什么相关推荐

  1. Java、Android静态代理与动态代理

    代理 (1) 什么是代理? 大道理上讲代理是一种软件设计模式,目的地希望能做到代码重用.具体上讲,代理这种设计模式是通过不直接访问被代理对象的方式,而访问被代理对象的方法.这个就好比 商户----&g ...

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

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

  3. Spring AOP中的静态代理和动态代理的原理和实践

    对于最近博主最近写博客的兴致大发,我也在思考:为什么而写博客?在互联网时代,无论你是牛人大咖,还是小白菜鸟,都有发表自己看法的权利.无论你是对的还是错的,都会在这个平台上找到答案.所以,我会尽可能去写 ...

  4. [设计模式] - 代理模式(静态代理与动态代理)

    文章目录 一.代理模式简介 1. 什么是代理模式 2. 简单举例 二.代理模式的设计思路 1. 代理模式的构成 1. 静态代理 2. 动态代理 (1)接口代理 (2)Cglib代理 三. 代理模式总结 ...

  5. JAVA静态代理和动态代理理解

    这篇文章是,是我看到的将代理讲的即深入透彻又浅显易懂.转载自:https://blog.csdn.net/briblue/article/details/73928350 代理 代理是英文 Proxy ...

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

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

  7. java静态代理与动态代理

    2019独角兽企业重金招聘Python工程师标准>>> 代理模式是java常见的设计模式.其目的是为其他对象提供一个代理以控制对某个真实对象的访问.通过代理类这一中间层,有效控制对真 ...

  8. 【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理

    这篇博文,我们主要以类图和代码的形式来对照学习一下静态代理和动态代理.重点解析各自的优缺点. 定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并 ...

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

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

  10. 架构设计之设计模式 (二) 静态代理和动态代理--间接“美”

    生活中有很多例子是间接来控制和访问的,比如你找一个人不自己亲自去,而是让别人代替去做这就是最简单的代理模式,是一种间接通信的例子,对象间的间接通信也同样是面向对象设计中的一条重要的"审美观& ...

最新文章

  1. usaco Feed Ratios
  2. C++中变量使用前必须初始化,否则报错~
  3. shell之实战应用一(查找xml文档中的关键字段)
  4. 基于物化视图优化_「PostgreSQL技巧」PostgreSQL中的物化视图与汇总表比较
  5. 程序员Geek们如何使用电脑
  6. java properties读取缓存_Java读取Properties文件
  7. 推荐几个在大厂996,却一心想要按时下班的公众号主和他们的工作(摸鱼)心得...
  8. 黄聪:360浏览器、chrome开发扩展插件教程(1)开发Chrome Extenstion其实很简单
  9. 【持续更新】实用算法小点总结(怕忘QAQ)
  10. Ubuntu 安装JDK18
  11. pe卸载win10更新补丁_禁用Win10系统更新
  12. Java金额转换_阿拉伯数字转换成中国大写数字
  13. vs2019个性化配置
  14. spring 中事物的使用
  15. 三分钟告诉你为什么再昂贵的普洱茶都只是用棉纸包装?
  16. swing小区安全管理系统
  17. Python制作日历
  18. 点击链接跳出微信下载app如何实现
  19. 打开Sql数据库文件(扩展名为mdf)
  20. 输出1900到2000年的所有闰年

热门文章

  1. python hog特征提取,直接从原始图像的HoG特征提取编辑图像的HoG特征
  2. 非线性光纤光学_进展 | 二维材料复合光纤实现超高非线性效应
  3. 主机信息采集(域名、网站备案等)初学者指南
  4. Postman下载与安装详细步骤
  5. 电压、电流检测方法介绍
  6. Mac终端adb安卓刷机
  7. Python实现离线字典+听写单词(一):获取离线字典
  8. 博科交换机常用配置命令
  9. 【转】从机器学习谈起
  10. 计算机二级office题库文档,二级office题库