我的应用程序实现了访问者模式。我有几个不同的访问者实现了相同的界面,我正在尝试确定为每个访问者定义访问方法的最佳位置。
起初,我认为最好有一个包含单个访问者的所有定义的单个 .cpp 文件(每个访问者一个文件)。这种方法导致每个访问者定义文件都包含相当多的#include 指令,用于要访问的元素和每个访问方法所需的任何支持功能。
或者,我可以在包含每个元素定义的 .cpp 文件中为每个访问者定义访问方法,使用这种方法,除了访问者标头之外,所需的包含指令已经存在(因此不再重复)。访问者标头仅包含每个元素的前向声明,因此这种方法的好处是总体上减少了包含的标头的数量。
elementa.cpp
#include ...
ElementA specific stuff.
#include ...
void ElementA::accept(Visitor &visitor) {
visitor.visit(*this);
}
void VisitorA::visit(ElementA &element)
{
//do cool stuff
}
void VisitorB::visit(ElementA &element)
{
//do other cool stuff
}
我的问题是,以这种方式为单个文件中的多个类定义方法是否可以接受/常见?