设计模式之(二十二)访问者模式(visitor)

本文详细介绍了访客模式的概念、结构及应用实例。访客模式可以在不改变元素类的前提下,为对象结构中的元素添加新的操作。文章还展示了如何通过具体代码实现访客模式,并讨论了其优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Visitor模式定义:

 

 

表示一个作用于某对象结构(ObjectStructure)中各元素的操作(Element)。

它可以使你不修改各元素类的前提下定义作用于这些元素的新操作,

也就是动态的增加新的方法。(结合例子才能理解,说了些什么。。。)

 

Visitor模式结构图:

 

 

 

 

 

 

visitor

 

Visitor模式中主要角色:

 

1)访问者角色(Visitor):为该对象结构(ObjectStructure)中的具体元素提供一个访问操作接口。该操作接口的名字和参数标识了要访问的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。

 

2)具体访问者角色(ConcreteVisitor):实现Vistor接口的操作。

 

3)元素角色(Element):该接口定义一个accept操作接受具体的访问者。

 

4)具体元素角色(ConcreteElement):实现Element的accept操作。

 

5)对象结构角色(ObjectStructure):这是使用访问者模式必备的角色。它要具备以下特征:能枚举它的元素;可以提供一个高层的接口以允许该访问者访问它的元素;可以是一个复合(组合模式)或是一个集合,如一个列表或一个无序集合。

 

Visitor模式的一个例子

 

输出结果:

ElementA visited by ConcreteVisitor 

ElementB visited by ConcreteVisitor 

Visitor模式优缺点:

 

1)优点:不用修改具体的元素类,就可以增加新的操作。主要是通过元素类的accept方法来接受一个visitor对象来实现的。

 

2) 缺点:不易频繁增加元素类,没增加一个元素类,就要在Visitor接口中写一个针对该元素的方法,而且还要修改Visitor的子类。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值