void Start() { List <IVisitorAcceptance> components = new List <IVisitorAcceptance> { new ConcreteComponentA(), new ConcreteComponentB() }; Debug.Log("The client code works with all visitors via the base Visitor interface:"); var visitor1 = new ConcreteVisitor1(); Client.ClientCode(components, visitor1); Debug.Log("It allows the same client code to work with different types of visitors:"); var visitor2 = new ConcreteVisitor2(); Client.ClientCode(components, visitor2); }
//Відвідувач - Visitor public Run Visitor() { Console.WriteLine("\nVisitor:"); // Setup structure ObjectStructure o = new ObjectStructure(); o.Attach(new ConcreteElementA()); o.Attach(new ConcreteElementB()); // Create visitor objects ConcreteVisitor1 v1 = new ConcreteVisitor1(); ConcreteVisitor2 v2 = new ConcreteVisitor2(); // Structure accepting visitors o.Accept(v1); o.Accept(v2); return this; }