0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

设计模式行为型:访问者模式

冬至子 来源:码农架构 作者:小智 2023-06-07 15:11 次阅读

在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。

主要将数据结构与数据操作分离。稳定的数据结构和易变的操作耦合问题。

结构图

图片

角色与理解

  • 访问者模式共分为五种角色:
    • Visitor (抽象访问者):内部声明一个对每一个具体元素进行访问的操作。
    • Concrete Visitor (具体访问者):继承抽象访问者,实现对所有具体元素的一种访问操作。
    • Element (抽象元素):声明accept()方法,以抽象访问者作为参数,供访问者访问。
    • Concrete Element (具体元素):实现accept()方法,调用访问者的访问方法以完成访问者对自身的访问。
    • Object Structure (对象结构):存储并管理元素,提供一个入口,使所有元素被访问。
  • 被访问者提供访问入口,使自身的数据被访问者访问。

核心代码

  • 抽象访问者

图片

  • 具体访问者

图片

  • 抽象元素

图片

  • 具体元素

图片

  • 对象结构

图片

  • 客户端

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4586

    浏览量

    92457
  • 存储管理
    +关注

    关注

    0

    文章

    31

    浏览量

    9159
收藏 人收藏

    评论

    相关推荐

    基于入侵行为模式的告警关联

    本文提出了一种基于入侵行为模式的告警关联方式。入侵行为模式是定义在时间基础上的一组谓词公式,其实质是通过时间限制联系在一起的入侵事件的集合。该方法在对大量告
    发表于 08-13 08:35 6次下载

    上网行为管理新模式

    上网行为管理新模式 谈起多角色管理划分,首先让人想起的是企业管理架构。从管理层面上来讲,角色管理划分非常重要,企业管理需要通过“
    发表于 04-09 09:41 430次阅读

    基于观察模式的屏幕布局控件设计

    观察模式作为设计模式行为模式的一种,解决了上述具有一对多依赖关系对象重用问题。文中在分析观察
    发表于 02-13 16:20 4次下载
    基于观察<b class='flag-5'>者</b><b class='flag-5'>模式</b>的屏幕布局控件设计

    Java设计模式(二十一):中介模式

    中介模式(Mediator Pattern) 中介模式(Mediator Pattern): 属于对象的行为
    发表于 01-24 11:28 290次阅读

    嵌入式软件设计模式 好文值得收藏

    本文引用自本人公众号文章: 嵌入式开发中的两点编程思想   C语言也很讲究设计模式?一文讲透   包含如下: 01)C语言和设计模式(继承、封装、多态)   02)C语言和设计模式访问者
    的头像 发表于 06-20 09:09 1918次阅读

    GoF设计模式访问者模式

    访问者模式的目的是,解耦数据结构和算法,使得系统能够在不改变现有代码结构的基础上,为对象新增一种新的操作。
    的头像 发表于 10-08 11:05 652次阅读

    设计模式访问者设计模式

    访问者设计模式是一种行为设计模式,用于将算法与对象结构分离。它允许你在不改变对象结构的前提下定义新的操作。
    的头像 发表于 06-06 11:25 764次阅读

    设计模式行为:中介模式

    提供一个中介完成对一系列操作的封装,降低对象间的系统耦合度。中介模式又称为调停模式
    的头像 发表于 06-06 17:42 676次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b><b class='flag-5'>型</b>:中介<b class='flag-5'>模式</b>

    设计模式行为:备忘录模式

    备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为模式
    的头像 发表于 06-07 11:16 813次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b><b class='flag-5'>型</b>:备忘录<b class='flag-5'>模式</b>

    设计模式行为:策略模式

    在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式
    的头像 发表于 06-07 11:18 619次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b><b class='flag-5'>型</b>:策略<b class='flag-5'>模式</b>

    设计模式行为:状态模式

    在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为模式
    的头像 发表于 06-07 11:20 559次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b><b class='flag-5'>型</b>:状态<b class='flag-5'>模式</b>

    设计模式行为:模板方法模式

    在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。
    的头像 发表于 06-07 15:13 552次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b><b class='flag-5'>型</b>:模板方法<b class='flag-5'>模式</b>

    设计模式行为:观察模式

    定义对象之间的一种一对多依赖关系,使得每一个对象发生状态的变化时,其相关依赖对象皆得到通知并被自动更新,又称为发布-订阅模式、模型-视图模式、源-监听器模式或从属
    的头像 发表于 06-07 16:56 630次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b><b class='flag-5'>型</b>:观察<b class='flag-5'>者</b><b class='flag-5'>模式</b>

    行为设计模式在UVM中的应用

    接下来介绍行为设计模式在UVM中的应用。
    的头像 发表于 08-09 14:01 630次阅读
    <b class='flag-5'>行为</b><b class='flag-5'>型</b>设计<b class='flag-5'>模式</b>在UVM中的应用

    UVM设计模式访问者模式

    Visitor Pattern: 允许一个或者多个操作应用到一组对象上,解耦操作和对象本身。换言之,如果component的数据结构是比较稳定的,但其是易于变化的,那么使用访问者模式是个不错的选择。
    的头像 发表于 08-11 09:28 702次阅读
    UVM设计<b class='flag-5'>模式</b>之<b class='flag-5'>访问者</b><b class='flag-5'>模式</b>