Скажем, у меня есть посетитель, как этотКак должна быть передана информация о местоположении в шаблоне посетителя?
class Visitor : IVisitor
{
void Accept(Visitable v)
{
/// other code
v.AChild.Visit(this);
v.BChild.Visit(this);
}
}
Где AChild и BChild может быть точно такой же тип, но посещение код необходимо различать между ними (он должен работать по-разному на AChild чем BChild). Каков наилучший способ сделать это?
- комплект состояние в визитера и проверить его на следующий вызов
- передать другой посетитель каждому ребенку
- другой?
Я сожалею, я сделал это назад в первый раз (в настоящее время Accept
был Visit
). Теперь он соответствует the pattern as show in Wikipedia.
Все методы посещения выглядеть следующим образом:
void Visit(IVisitor v) { v.Accept(this); }
см. Этот вопрос немного на мой взгляд: http://stackoverflow.com/questions/522803 – BCS
IIRC, как все должно работать, v.Visit (это) будет кодом, который попал в мою функцию – BCS
I gut Посетите/принимайте назад. см. править – BCS