在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
主要将数据结构与数据操作分离。稳定的数据结构和易变的操作耦合问题。
结构图
![图片](//file1.elecfans.com/web2/M00/89/4B/wKgaomSALY2AT9LMAAOhUKfuFmA512.jpg)
角色与理解
- 访问者模式共分为五种角色:
- Visitor (抽象访问者):内部声明一个对每一个具体元素进行访问的操作。
- Concrete Visitor (具体访问者):继承抽象访问者,实现对所有具体元素的一种访问操作。
- Element (抽象元素):声明accept()方法,以抽象访问者作为参数,供访问者访问。
- Concrete Element (具体元素):实现accept()方法,调用访问者的访问方法以完成访问者对自身的访问。
- Object Structure (对象结构):存储并管理元素,提供一个入口,使所有元素被访问。
- 被访问者提供访问入口,使自身的数据被访问者访问。
核心代码
![图片](//file1.elecfans.com/web2/M00/89/4C/wKgZomSALY2APnw_AADpKwzhtdw150.jpg)
![图片](//file1.elecfans.com/web2/M00/89/4D/wKgZomSALY2AYAPcAAPXXwJrZIM028.jpg)
![图片](//file1.elecfans.com/web2/M00/89/4D/wKgZomSALY2AbjnWAAI2qlvt-P0923.jpg)
![图片](//file1.elecfans.com/web2/M00/89/4B/wKgaomSALY2AMtGTAAKxeKpFl3s284.jpg)
![图片](//file1.elecfans.com/web2/M00/89/4B/wKgaomSALY2ANoO_AAK_gVDWgNs153.jpg)
![图片](//file1.elecfans.com/web2/M00/89/4D/wKgZomSALY2Acm70AANI75NQCa0341.jpg)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
本文提出了一种基于入侵行为模式的告警关联方式。入侵行为模式是定义在时间基础上的一组谓词公式,其实质是通过时间限制联系在一起的入侵事件的集合。该方法在对大量告
发表于 08-13 08:35
•6次下载
多行为模式高频切换下尺度指纹步态算法_王仕亮
发表于 01-08 14:36
•0次下载
本文引用自本人公众号文章: 嵌入式开发中的两点编程思想 C语言也很讲究设计模式?一文讲透 包含如下: 01)C语言和设计模式(继承、封装、多态) 02)C语言和设计模式(访问者
发表于 06-20 09:09
•1805次阅读
访问者模式的目的是,解耦数据结构和算法,使得系统能够在不改变现有代码结构的基础上,为对象新增一种新的操作。
发表于 10-08 11:05
•541次阅读
根据不同的应用场景与意图,设计模式主要分为创建型模式、结构型模式和行为型模式三类。本文主要探索行为
发表于 10-31 14:24
•766次阅读
访问者设计模式是一种行为型设计模式,用于将算法与对象结构分离。它允许你在不改变对象结构的前提下定义新的操作。
发表于 06-06 11:25
•645次阅读
提供一个中介者完成对一系列操作的封装,降低对象间的系统耦合度。中介者模式又称为调停者模式。
发表于 06-06 17:42
•597次阅读
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。
发表于 06-07 11:16
•667次阅读
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
发表于 06-07 11:18
•495次阅读
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。
发表于 06-07 11:20
•445次阅读
在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。
发表于 06-07 15:13
•455次阅读
定义对象之间的一种一对多依赖关系,使得每一个对象发生状态的变化时,其相关依赖对象皆得到通知并被自动更新,又称为发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。
发表于 06-07 16:56
•518次阅读
接下来介绍行为型设计模式在UVM中的应用。
发表于 08-09 14:01
•457次阅读
Visitor Pattern: 允许一个或者多个操作应用到一组对象上,解耦操作和对象本身。换言之,如果component的数据结构是比较稳定的,但其是易于变化的,那么使用访问者模式是个不错的选择。
发表于 08-11 09:28
•540次阅读
噪声的模式与行为,区别Earth与Ground的重要性
发表于 12-01 16:04
•321次阅读
评论