c#代码介绍23种设计模式_22访问者模式

目录

1、访问者模式的定义

2、访问者模式的结构图

3、从访问者的结构图可以看出,访问者模式涉及以下几类角色

4、访问者模式的实现

5、访问者模式的应用场景

6、访问者模式的优缺点 

7、实施思路


1、访问者模式的定义

访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。
访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。

数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反过来执行节点对象的操作。
这样的过程叫做“双重分派”。节点调用访问者,将它自己传入,访问者则将某算法针对此节点执行

2、访问者模式的结构图

从上面描述可知,访问者模式是用来封装某种数据结构中的方法。
具体封装过程是:每个元素接受一个访问者的调用,每个元素的Accept方法接受访问者对象作为参数传入,访问者对象则反过来调用元素对象的操作

这里需要明确一点:访问者模式中具体访问者的数目和具体节点的数目没有任何关系。

3、从访问者的结构图可以看出,访问者模式涉及以下几类角色

1)抽象访问者角色(Vistor):声明一个活多个访问操作,使得所有具体访问者必须实现的接口。
2)具体访问者角色(ConcreteVistor):实现抽象访问者角色中所有声明的接口。
3)抽象节点角色(Element):声明一个接受操作,接受一个访问者对象作为参数。
4)具体节点角色(ConcreteElement):实现抽象元素所规定的接受操作。
5)结构对象角色(ObjectStructure):节点的容器,可以包含多个不同类或接口的容器。

4、访问者模式的实现

方法1:
先不用访问者模式的方式来实现某个场景。具体场景是——现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思忖小下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值