深入解析访问者模式:从基础到高级应用
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
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



