对于装饰器模式与代理模式的个人理解

这篇具有很好参考价值的文章主要介绍了对于装饰器模式与代理模式的个人理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对于这两个十分接近的设计模式,确实容易产生困惑,代理模式和装饰器模式看起来十分相似,都是由两个类实现相同的接口,然后一个类套另一个类。这件事足足困扰了我5分钟之久,在此总结一下它们的差别。

目的不同

装饰器模式相当于主动可选的代理模式,是对原本功能的拓展
当你想要增强你的类,给你的类增加新功能的话,你就该使用装饰器模式了。
装饰器模式能在不影响原本类的情况下,为原本类增添额外的功能。

代理模式相当于被动的装饰器模式,是对原本功能的完善
代理模式可以代理初始化极耗时间的“重量级”类,使其在进行常规操作时由代理类代劳,当必须进行初始化时,由代理类进行初始化并加载先前的变化,可以将卡顿分散至调用时。
代理模式可以在不影响原本类的情况下,为原本类增添额外的功能(比如记录日志)。

用法不同

装饰器模式由外部调用,可以自由选择是否使用装饰器,new C(new B(new A()))new C(new A()) 都是可行的(A 为被装饰类)。

代理模式为内部调用,由代理模式内部调用被代理对象。单独的被代理对象很可能功能不全,甚至根本就无法被外部创建,外部调用通常也是直接调用代理类。文章来源地址https://www.toymoban.com/news/detail-572362.html

到了这里,关于对于装饰器模式与代理模式的个人理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java基础】深入理解反射、反射的应用(工厂模式、代理模式)

    Java 反射机制是指在 运行时动态地获取和操作类的信息、调用对象的方法和访问对象的属性的能力 。通过反射,可以在程序运行时分析和修改类的结构、行为和状态。 Java 反射机制提供了以下功能: 获取类的信息:可以获取类的名称、修饰符、父类、实现的接口等。 创建对

    2024年02月09日
    浏览(43)
  • 对于计算机考研的个人攻略

    一:专业课复习 ​ 首先从时间上来说,对专业课的复习是在 数学基础部分 看完以后,这个时候是数学题目和专业课同步进行的。 这里我们按照 408 的划分来复习 408 分数占比为: 数据结构 45 分 计算机组成原理 45 分 计算机操作系统 35 分 计算机网络 25 分 ​ 所以我们根据分

    2024年01月17日
    浏览(30)
  • 文心一言对于宣传文案理解

    前段时间对于文心一言开放部分内测邀请,有幸获得邀请内测权限!抱着试一试的态度对其进行了使用,结果还是比较满意的。我们来看一下我所说的满意是否能够达到你的要求!!! 文心一言的使用还是比较简单的,只需要在对话框中输入你的描述,发送到百度,即可收到

    2024年02月13日
    浏览(27)
  • 对于计算机视觉的一定理解

    计算机视觉(CV)技术是一种通过计算机对图像或视频进行处理和理解的技术。它利用算法和模型来模仿人类视觉系统,从而实现图像识别、目标检测、图像分割等任务。以下是计算机视觉技术的一些优势和挑战的例子。 计算机视觉的应用方面非常广泛,包括但不限于以下几

    2024年02月19日
    浏览(31)
  • 对于Java中String的简单理解

          String变量的本质:在堆上申请一块空间创建字符串,并让指针指向这块空间。 String变量发生改变(赋值),原指向的字符串空间不会被释放,而是重新申请一块空间创建字符串,并让指针指向这块空间。由于Java拥有自动内存管理机制,因此在程序运行结束或堆空间

    2024年02月12日
    浏览(31)
  • 对于<router-view>标签的理解

    router-view的含义: router-view: 路由容器 Vue 路由中的 router-view 是用来承载当前级别下的子级路由的一个视图标签; 此标签的作用就是显示当前路由级别下一级的页面。 router-view的作用: 就比如说App.vue是根组件,在它的template标签里使用router-view,而且配置好路由的情况下,就

    2024年01月17日
    浏览(29)
  • 我这些年对于自动化测试的理解

    把以人为驱动的测试行为转化为机器执行的一种过程。 简单讲:比如使用自动化测试框架、脚本、工具等自动打开测试对象(引用),自动去执行测试用例(此过程中包含自动化查找元素、控件等),自动输入测试数据、自动生成测试报告等一系列的自动化过程; 通俗讲:

    2024年02月05日
    浏览(33)
  • 对于LayoutInflater.from(this).inflate()方法的理解

    对于 LayoutInflater.from(this).inflate() 方法的几个参数以及用法总是迷迷糊糊,源码看了忘,忘了看,因此决定写这篇博客做下记录。 我们知道,调用LayoutInflater.from(this).inflate()方法最终都会走三参的方法 public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) ,这

    2024年02月13日
    浏览(31)
  • 对于params、data、headers传参的基础理解

    提示:简单的理解, 传参给后台有三种方式: 1. params 传参 2. data 传参 3. headers 传参 params 的对象参数名和值, axios 源码会把参数和值,拼接在 url? 后面给后台(query 查询字符串) 代码如下:前台 data 的对象参数名和值,axios 源码会把参数和值,拼接在请求体里(body 参数)

    2024年02月06日
    浏览(33)
  • 对于EVM系链交易缓冲池txpool的理解

    区块链就是和交易打交道,我们今天就介绍下,交易处理过程中的一个重要组成部分:txpool。这篇文章主要从功能角度介绍,通过这篇文章会了解: txpool的在交易中的位置和作用。 txpool的功能,核心组成部分queued和pending。 txpool如何实现它的功能。 txpool源码的重要关注点。

    2024年02月05日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包