29、深入解析访问者模式:从基础到高级应用

深入解析访问者模式:从基础到高级应用

1. 抽象类与虚方法在访问者模式中的选择

在使用访问者模式时,一个重要的问题是使用接口还是抽象类。这主要取决于可访问对象的层次结构。
- 单一根节点层次结构 :如果层次结构有单一根节点和多个继承者,根节点作为标记接口将具有相似功能的对象连接起来,那么可以使用接口,或者在需要时使用带有抽象 Accept() 成员的抽象类。
- 考虑继承的情况 :如果计划进行继承,将层次结构的基类设为抽象类有明显优势。以如下代码为例:

public class AbsoluteDoubleExpression : DoubleExpression
{
    public AbsoluteDoubleExpression(double value) : base(value) {}
}

Accept() 定义在接口中,无法对其进行重写。而当层次结构的根是提供默认无操作 Accept() 实现的抽象类时,情况就不同了:

public class AbsoluteDoubleExpression : DoubleExpression
{
    public AbsoluteDoubleExpression(double value) : base(value) {}
    public override void A
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值