Gra*_*ant 5 c# design-patterns domain-driven-design visitor-pattern
在实现访问者模式时,向 Accept 和 Visit 方法添加额外的参数是不是一个坏主意?我从未见过任何这样做的例子,但也没有提到这是一个坏主意。
我想在我的域模型中使用此模式,但是需要附加参数以及实体本身。
例如——
public interface ISomethingVisitor
{
void Visit(Foo foo, int p1, int p2);
}
public interface ISomethingVisitable
{
void Accept(ISomethingVisitor visitor, int p1, int p2);
}
Run Code Online (Sandbox Code Playgroud)
我想说这是一个坏主意。对于该访问者来说可能效果很好,但是当另一个访问者需要更多/不同的参数时会发生什么?如果p1,p2不更改,您可以在构建时将它们提供给访问者:
public class MyVisitor : ISomethingVisitor
{
private int p1;
private int p2;
public MyVisitor(int p1, int p2)
{
_p1 = p1;
_p2 = p2;
}
public void Visit(Foo foo)
{
//got access to _p1, _p2 here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1856 次 |
| 最近记录: |