static void Main(string[] args) { // base implementation var structure = new ObjectStructure(); structure.Add(new ElementA()); structure.Add(new ElementB()); structure.Accept(new ConcreteVisitor1()); structure.Accept(new ConcreteVisitor2()); //--------------------------------- doubleDespetcher.Visitor v = new doubleDespetcher.Visitor(); Graphic g = new Dot(); // Метод accept() – переопределен, но не перегружен. А значит, связан // динамически. Поэтому реализация `accept` будет выбрана во время выполнения // уже из того класса, объект которого его вызвал (класс Dot). g.accept(v); //--------------------- Console.WriteLine("Bank sample: "); testReal(); Console.ReadLine(); }