訪問者パターンの実装では、以下のようなインターフェイスがあります(インターフェイス自体が間違っていると思われる場合は自由に教えてください)、訪問したすべてのアイテムのリストを追跡する責任は誰にありますか?訪問者か訪問者か?具体的には、トラッカーは、同じアイテムが2回訪問されていないことを確認する責任も負う必要があります(訪問しているグラフに循環参照が含まれている場合)。訪問者パターンアイテムトラッカー
/// <summary>
/// Defines a type that may accept visitors.
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IVisitable<T>
{
// Methods
void Accept(T instance, IVisitor<T> visitor);
}
/// <summary>
/// Defines a type that visits objects.
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IVisitor<T>
{
// Methods
void Visit(IVisitable<T> visitable);
// Properties
bool HasCompleted { get; }
}
私は上のインターフェイスを与えて、それを行う方法がわかりません。 IVisitorに訪問(Tインスタンス)メソッドがあり、訪問(IVisitable訪問可能)ではありませんか?または、インスタンスと訪問可能の両方を取る必要がありますか? –
Jeff
私の更新をチェックしてください。 – jgauffin
しかし訪問者だけがアイテムのリストを含んでいれば、反復を止めるべきであることを訪問者は知ることができますか?私はすべてのノードが訪問されるまで、グラフ全体を見たいと思う。 – Jeff