一、什么是代理

首先理解一下什么是代理。简单来说,代理就你要做一件事情,我替你把事情做了。这是现实生活中我们遇到的代理的需求场景。但写代码的时候对代理场景的需求,跟现实场景有点区别,本质上还是帮你做事(调用要执行的方法),但在代码世界里,如果仅仅只是把要调用的方法执行了,那完全没有必要再新建类(代理类)去执行,因此,编码的代理场景,更多体现在,我不但要替你把原本先做的事情(调用方法)做了,我还要把你不需要做、或不想做的事情给做了,我们称其为方法的增强。

二、代理方式

众所周知,java里面的代理模式分为静态代理和动态代理两种方式。那如何理解这两种代理方式呢?以前我总认为这两种方式是对立的,这给我的理解带来不小的阻碍。其实不然,后来我才发现,它们并不对立,而是解决编码的过程中代理的两种不同场景而已。

前面我们提到,编码的代理需求,更多体现在于方法的增强。围绕这个核心,有利于我们更好的理解两者的异同。

  • 静态代理

首先我们举一个静态代理的使用场景,有利于我们更好的理解。我始终相信每一项技术的发展,都是来着现实生活的推动。因此我们可以找一个现实场景进行类比。

比如近两年的新冠疫情。在此插一句,祝人类早日战胜疫情,早日摆脱口罩的束缚,早日自由畅快地呼吸。提到战胜疫情,就不得不提到疫苗,人类想战胜疫情,目前最好的方式就是疫苗的研发。那疫苗跟我们代理有啥关系呢?

我们都知道,疫苗在研发处理的初期,都是比较紧缺的,所以在初期,对疫苗的使用,肯定是先给最需要的人先使用。比如先给一线医护人员使用。那打疫苗就得报名,她们还被告知是手动填表报名,可能我们的没了的医护天使在一线抗战都非常忙,没有时间报名,那这个时候有个小聪明就想,我也要为疫情抗战出一份力,我没法到一线工作,我只是能帮一线医护人员报名,帮他们代理报名。这时候,一线医护人员是一个特定的群体(对应我们的类),手动填表报名是一个要被代理的特定动作(一个方法),小聪明(代理类)代理报名。

为特定的类,固化的方法代理,我们称之为静态代理,是对原有业务逻辑的扩充。小聪明很明确,他要为一线医护天使报名打疫苗,并处理一些杂七杂八的事情,不耽误他们的工作。

  • 动态代理

后来随着疫苗生产的加速推进,疫苗越来越多。对越来越多的群体开放,学生想报名,工人想报名,画家想报名,程序员也想报名的,叫不上名的人都想报名。这时原先的手动填表已经满足不了需求了。需求,没错,就是需求推动社会的进步,技术的发展。这时政府相关机构会开发通道,让更多有能力的人或机构来帮忙解决报名的事情。你会看到,现在琳琅满目的报名方式:网站报名,社区报名,小程序报名,各式各样的报名方式被开发出来,只为一件事,就是报名。

对应我们的编程,其实的就是写一个接口,报名渠道,比如说小程序,开放报名通道就是接口里面提供报名的方法,不断增加的各类群体都想通过小程序报名,是对接口方法的实现,小程序不断的完善自己对各类群体的报名支持,我们可以理解为动态生成代理类。然后小程序完成报名,就是对人们报名需求的代理。通过这些代理进行报名,可以快速获上交材料,获得报名资格,这是对方法的增强。

  • 区别

可以看到,静态代理和动态代理都提到了方法的增强,这是我们一直强调的代理的场景。那他们有什么不同呢。从上面例子不难理解,动态代理是为了解决静态代理的局限性而产生的。静态代理是对类里特定方法的增强,而动态代理是对接口的里方法的增强,只要实现该接口的类,都能实现方法的增强。由于实现接口的方法可以有无数个类,所以才有了动态代理的需求

大话Java代理模式的更多相关文章

  1. Java代理模式

    java代理模式及动态代理类 1.      代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目 ...

  2. Java代理模式示例程序

    Java代理模式示例程序 当然不是我想出来的,是我看的一个网上教程里的. 模拟的是一个对电脑公司的代理 真实类的接口: public interface SaleComputer { public S ...

  3. java 代理模式 总结

    1.前言 最近舍友去面试遇到了关于java代理模式的问题. 我虽然知道怎么使用,但是没有做过正经的总结,因此有了这篇随笔,好好总结一下三大代理模式底层原理. 事实上,在开发项目的时候,基本用不上代理, ...

  4. 浅谈java代理模式

    讲解java代理模式 目录 讲解java代理模式 何谓代理模式 静态代理 动态代理 JDK动态代理 CGLIB动态代理 何谓代理模式 代理模式,即Proxy Pattern,23种java常用设计模式 ...

  5. Java代理模式/静态代理/动态代理

    代理模式:即Proxy Pattern,常用的设计模式之一.代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问. 代理概念 :为某个对象提供一个代理,以控制对这个对象的访问. 代理类和委 ...

  6. JAVA代理模式与动态代理模式

    1.代理模式 所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用.代理模式给某 ...

  7. java 代理模式一: 静态代理

    代理模式: 代理模式的作用:为其他对象提供一种代理以控制对 特定对象  的访问. 某种情况下,一个客户不想或者直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用:通过代理对象引用. ...

  8. 18 java 代理模式 (转)

    静态代理 1.新建一个接口,这个接口所提供的方法是关于数据库操作的 public interface EmployeeDao { public void updateSalary(); } 2.建一个 ...

  9. JAVA 代理模式(Proxy)

    1.代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式一般涉 ...

随机推荐

  1. nginx官方源安装-主配置文件详解

    HTTP相关术语 PV : Page Visit 页面独立浏览量,查看日志生成条数可以看到PV数量. PV全称Page View,中文翻译即页面浏览.其具体的度量方法是从浏览器发出一个对网络服务器的请 ...

  2. IntelliJ IDEA配置tomcat 教程

    1.点击Run-Edit Configurations... 2.点击左侧"+",选择Tomcat Server--Local 3.在Tomcat Server -> Unn ...

  3. WEB页面下载内容导出excel

    internal class DownloadHandler : IDownloadHandler    {        public DownloadHandler()        {      ...

  4. SystemVerilog数组(一)

  5. Navicat Premium 15 linux 安装与激活 ArchLinux 2021

    查看了很多教程花了半小时才弄好可真不容易 参考https://github.com/orginly/navicat-keygen 下载地址 http://www.navicat.com.cn/down ...

  6. [leetcode] 75. 分类颜色(常数空间且只扫描一次算法)

    75. 分类颜色 我们直接按难度最高的要求做:你能想出一个仅使用常数空间的一趟扫描算法吗? 常数空间 只能扫描一趟.注意,是一趟,而不是O(n) 题中只会出现3个数字:0,1,2.换句话说,0肯定在最 ...

  7. ResNet-50模型图像分类示例

    ResNet-50模型图像分类示例 概述 计算机视觉是当前深度学习研究最广泛.落地最成熟的技术领域,在手机拍照.智能安防.自动驾驶等场景有广泛应用.从2012年AlexNet在ImageNet比赛夺冠 ...

  8. 相机自动对焦AF原理

    相机自动对焦AF原理 AF性能是判断相机好坏的重要指标,主要从准确度和速度两个方面来进行考察,本文将介绍自动对焦的几种方式. 一.凸透镜成像原理 二.三种对焦方法 有公式在手,只要给相机安个测距仪就好 ...

  9. CVPR2020:视觉导航的神经拓扑SLAM

    CVPR2020:视觉导航的神经拓扑SLAM Neural Topological SLAM for Visual Navigation 论文地址: http://openaccess.thecvf. ...

  10. 转置卷积Transposed Convolution

    转置卷积Transposed Convolution 我们为卷积神经网络引入的层,包括卷积层和池层,通常会减小输入的宽度和高度,或者保持不变.然而,语义分割和生成对抗网络等应用程序需要预测每个像素的值 ...