专栏首页大闲人柴毛毛张全蛋和李小花的故事——“代理模式”

张全蛋和李小花的故事——“代理模式”

举个例子:

假设张全蛋喜欢上了李小花,张全蛋准备给李小花送一些礼物,但张全蛋又非常害羞,因此买了礼物之后让王尼玛代送。王尼玛跑到李小花把礼物送给她之后就走了。

那么问题就来了,李小花误以为礼物是王尼玛送的。

在代码世界中也是一样,张全蛋、王尼玛、李小花是三个对象,张全蛋对象中有一个函数:送礼物,王尼玛对象中也有个函数:送礼物,但王尼玛的送礼物函数只是调用了张全蛋的送礼物函数,也就是送礼物函数的真正实现在张全蛋对象中。然后李小花调用了王尼玛对象中的送礼物函数,李小花并不知道张全蛋的存在,误以为送礼物的函数就是王尼玛的。那么王尼玛这个类就是个代理类。

代理模式是什么呢?

若C类要调用A类中的函数,我们不给C类直接调用,而是在A和C类中间增加一个B类,A类和B类都有相同的函数,只不过B类中的函数都是调用A类的,也就是B类的函数并没有实现,然后C类只与B类交互,让C类感受不到A类的存在。

代理模式的本质:

代理类和被代理类需要实现同一个接口,这样他们有共同的函数。函数真正的实现在被代理类中完成,代理类的每一个函数仅仅是调用了被代理类的对应的函数。

代理模式的应用:

1.远程代理。也就是为一个对象在不同地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

2.虚拟代理。当需要创建的对象开销很大时,通过代理对象存放需要很长时间实例化的真正对象。

比如:打开一个有很多图片的HTML页面,它很快就会被打开,但一开始里面只有文字,图片只看到框而没有图片,要过一会儿后图片才会被加载。这里图片的框就是一个代理对象。

3.安全代理。用来控制真实对象访问时的权限。

4.智能指引。当调用真实对象前,代理处理另外一些事情。也就是在访问原本对象之前,再附加一些业务处理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入剖析Spring(四)——AOP

    AOP思想 AOP是对OOP的一种补充。 面向对象(OOP)引入了继承、多态、封装,将系统的业务功能按照模块划分,每个模块用一个或多个类来表示。 而对于一些系...

    大闲人柴毛毛
  • 三分钟理解“享元模式”——设计模式轻松掌握

    享原模式的官方定义: 运用共享技术有效地支持大量细粒度的对象。 大白话讲: 一个类它可能生成好多对象,但这些对象根据属性值的不同一共分成N类,每种类型中属性值都...

    大闲人柴毛毛
  • 深入理解JVM(十)——类加载器

    类与类加载器 类加载器的作用:将class文件加载进JVM的方法区,并在方法区中创建一个java.lang.Class对象作为外界访问这个类的接口。 类与类加...

    大闲人柴毛毛
  • 【已解决】Swift如何和OC使用Get方法实现懒加载

    我们在OC里面为了代码简单并且保证用到变量时候一定存在,并且只有使用才加载来提升性能。

    君赏
  • 一 iOS 模版引擎加速web预览

    在iOS开发中大家对于有些功能和模块不可避免的需要使用HTML来加速开发和实现功能的快速变更,例如:预览和活动页面。

    大话swift
  • TCP的长连接与短连接的含义与区别(附Java代码实现)

    关于连接 TCP/IP通信方式分为连接与非连接型通讯方式 TCP:TCP是一种可靠通信,每次通信需要建立一个专门的通信链路 UDP:UDP通信是一种无连接方式,...

    用户1257393
  • JVM 学习笔记(一)

    JRE是Java Runtime Environment的缩写,是Java程序的运行环境。是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟...

    会说话的丶猫
  • PostgreSQL postgresql 读书会 一期 6 EFFECTIVE_CACHE_SIZE 到底什么意思

    有时候一本书不是每一章或者每一部分都写的让你觉得可以仔细的阅读后能得到什么, 本期出于这个状态, 书中的第一句中提到 effecitve cache size ...

    AustinDatabases
  • 我常用的Android第三方组件

    剑行者
  • 如何运用领域驱动设计 - 值对象

    作为领域驱动设计战术模式中最为核心的一个部分-值对象。一直是被大多数愿意尝试或者正在使用DDD的开发者提及最多的概念之一。但是在学习过程中,大家会因为受到传统开...

    句幽

扫码关注云+社区

领取腾讯云代金券