本文为敏捷软件开发 - 原则、模式与实践系列的一部分。
本文对应原书第28章
VISTOR模式系列允许在不更改现有层次结构的情况下向其中增加新方法。
该系列中的模式如下
- VISITOR模式
- ACYCLIC VISITOR模式
- DECORATOR模式
- EXTENSION ObJECT模式
VISITOR模式
这个结构,可以通过增加新的ModemVisitor派生类来增加新的操作系统配置函数,而完全不用对Modem层次结构进行更改。所以,VISITOR模式使用ModemVisitor的派生类代替了Modem层次结构中的方法。
这之所以被称为双重分发是因为它涉及了两个多态分发。第一个分发是accept函数。该分发辨别出所调用的accept方法所属对象的类型。第二个分发是visit方法,它辨别出要执行的特定函数。这两个分发赋予了VISITOR模式非常快的执行速度。
VISITOR模式中的两次分发形成了一个功能矩阵。在Modem的例子中,矩阵的一条轴是不同类型的Modem。另一条轴是不同类型的操作系统。该矩阵的每个单元都被一项功能填充,该功能描绘了如何把特定的Modem初始化为可以在特定的操作系统中使用。