我对在分层方案中使用访问者模式有一个一般性的问题: 可以说我有一个Visitor和两个类,其中一个嵌套在另一个类中。
是...
(A)
public interface IVisitor
{
void Visit(Level1 level1);
void Visit(Level2 level2);
}
public class Level1
{
public IEnumerable<Level2> Level2Items { get; }
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
foreach(var i in Level2Items)
i.Accept(visitor);
}
}
public class Level2
{
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
}
}
(B)
public class Level1
{
public IEnumerable<Level2> Level2Items { get; }
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
}
}
public class Level2
{
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
}
}
public class MyVisitor : IVisitor
{
public void Visit(Level1 level1)
{
// Do something ....
foreach(var i in level1.Level2Items)
i.Accept(this); // or maybe Visit(i); ?
}
public void Visit(Level2 level2)
{
}
}