【发布时间】:2014-05-06 09:59:09
【问题描述】:
在实现访问者模式时,向 Accept 和 Visit 方法添加额外的参数是不是一个坏主意?我从未见过任何这样做的例子,但也没有提到这是一个坏主意。
我想在我的域模型中使用这种模式,但是除了实体本身之外还需要其他参数。
例如 -
public interface ISomethingVisitor
{
void Visit(Foo foo, int p1, int p2);
}
public interface ISomethingVisitable
{
void Accept(ISomethingVisitor visitor, int p1, int p2);
}
【问题讨论】:
-
而p1、p2对于整个访问都一样?
-
嗨@weston 是的,他们是。所有子类每次访问都需要相同的参数集。
-
如果访问/接受只是一个引用初始化器,那么您可以向访问者添加额外的方法(带参数)来处理这个引用。将此视为随意阅读元素的权利。
标签: c# design-patterns domain-driven-design visitor-pattern