static void Main(string[] args) { var o = new ObjectStructure(); o.Add(new ConcreteElementA()); o.Add(new ConcreteElementB()); o.Add(new ConcreteElementB()); o.Delete(new ConcreteElementB()); var v1 = new ConcreteVisitor1(); var v2 = new ConcreteVisitor2(); o.Accept(v1); o.Accept(v2); Console.ReadKey(); }