// "Visitor" // "ConcreteVisitor1" public void TestVisitorPattern() { // Setup structure Element aE = new ConcreteElementA(); Element bE = new ConcreteElementB(); var o = new ObjectStructure(); o.Attach(aE); o.Attach(bE); // Create visitor objects var v1 = new ConcreteVisitor1(); var v2 = new ConcreteVisitor2(); // Structure accepting visitors o.Accept(v1); o.Accept(v2); o.Detach(aE); o.Detach(bE); // Wait for user Console.Read(); }
public override void VisitConcreteElementA( ConcreteElementA concreteElementA) { Console.WriteLine("{0} visited by {1}", concreteElementA.GetType().Name, GetType().Name); concreteElementA.OperationA(); }
public override void VisitConcreteElementA(ConcreteElementA element) { Console.WriteLine("{0}: {1} visiting by {2} ...", element.GetType().Name, element.Name, this.GetType().Name); element.OperationA(); }
public static void Run() { var elementA = new ConcreteElementA(); var elementB = new ConcreteElementB(); var visitor = new ConcreteVisitor(); elementA.Accept(visitor); elementB.Accept(visitor); }
private Element BuildComposition() { ConcreteElementA a1 = new ConcreteElementA(); ConcreteElementA a2 = new ConcreteElementA(); ConcreteElementB b1 = new ConcreteElementB(); ConcreteElementC c1 = new ConcreteElementC(); ConcreteElementC c2 = new ConcreteElementC(); c1.AddElement(a1).AddElement(c2); c2.AddElement(a2).AddElement(b1); return(c1); }
public void VisitorPatternCodeTest() { ConcreteElementA elementA = new ConcreteElementA(); ConcreteElementB elementB = new ConcreteElementB(); ObjectStruture struture = new ObjectStruture(); struture.Add(elementA); struture.Add(elementB); ConcreteVisitor1 v1 = new ConcreteVisitor1(); struture.Aceppt(v1); }
public void Test() { Visitor visitorA = new ConcreteVisitorA(); Visitor visitorB = new ConcreteVisitorB(); Element elementA = new ConcreteElementA(); Element elementB = new ConcreteElementB(); Assert.That(elementA.Accept(visitorA), Is.EqualTo("ConcreteElementA visited by ConcreteVisitorA")); Assert.That(elementA.Accept(visitorB), Is.EqualTo("ConcreteElementA visited by ConcreteVisitorB")); Assert.That(elementB.Accept(visitorA), Is.EqualTo("ConcreteElementB visited by ConcreteVisitorA")); Assert.That(elementB.Accept(visitorB), Is.EqualTo("ConcreteElementB visited by ConcreteVisitorB")); }
public static void TestVisitors() { var o = new ObjectStructure(); var celA = new ConcreteElementA(); var celB = new ConcreteElementB(); Assert.AreSame(o.Attach(celA, true), celA); Assert.AreSame(o.Attach(celB, true), celB); var v1 = new ConcreteVisitor1(); var v2 = new ConcreteVisitor2(); var test1 = o.Accept(v1, true); StringAssert.AreEqualIgnoringCase(test1, "ConcreteElementA visited by ConcreteVisitor1\r\nConcreteElementB visited by ConcreteVisitor1\r\n"); var test2 = o.Accept(v2, true); StringAssert.AreEqualIgnoringCase(test2, "ConcreteElementA visited by ConcreteVisitor2\r\nConcreteElementB visited by ConcreteVisitor2\r\n"); }
public abstract void VisitConcreteElementA( ConcreteElementA concreteElementA);
public abstract void VisitConcreteElementA(ConcreteElementA concreteElementA);
public override void VisitConcreteElementA(ConcreteElementA concreteElementA) { Console.WriteLine("{0} is visited by {1}", concreteElementA, this); }
public override void VisitConcreteElementA(ConcreteElementA concreteElementA) { Debug.Log(concreteElementA.GetType().Name + " visited by " + this.GetType().Name); }
public override void VisitConcreteElementA(ConcreteElementA concreteElementA) { Console.WriteLine($@"{concreteElementA.GetType().Name}被{this.GetType().Name}访问"); }
public abstract string Visit(ConcreteElementA element);
public void Visit(ConcreteElementA element) { Console.WriteLine("Visiting " + element.Name + " ..."); }
public override void VisitA(ConcreteElementA concreteElementA) { concreteElementA.OperationA(); }
public override string Visit(ConcreteElementA element) { return($"{element.GetType().Name} visited by {GetType().Name}"); }
public override void VisitConcreteElementA(ConcreteElementA concreteElementA) { Console.WriteLine("{0} visit {1}", this.GetType().Name, concreteElementA.GetType().Name); }
public override void VisitConcreteElementA(ConcreteElementA element) { Console.WriteLine($"{element.GetType().Name} 被 {GetType().Name} 访问"); }
public void VisitConcreteElementA(ConcreteElementA concreteElementA) { Console.WriteLine("visitConcreteElementA by ConcreteVisitorA"); }
public void VisitorElementA(ConcreteElementA element) { // Concrete visitor 1 on element a }
public void Visit(ConcreteElementA elementA) { elementA.FeatureA(); }
public override string Visit(ConcreteElementA element) { return $"{element.GetType().Name} visited by {GetType().Name}"; }