Ejemplo n.º 1
0
        // "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();
        }
Ejemplo n.º 2
0
 public override void VisitConcreteElementA(
     ConcreteElementA concreteElementA)
 {
     Console.WriteLine("{0} visited by {1}",
                       concreteElementA.GetType().Name, GetType().Name);
     concreteElementA.OperationA();
 }
Ejemplo n.º 3
0
 public override void VisitConcreteElementA(ConcreteElementA element)
 {
     Console.WriteLine("{0}: {1} visiting by {2} ...",
                       element.GetType().Name,
                       element.Name,
                       this.GetType().Name);
     element.OperationA();
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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"));
        }
Ejemplo n.º 8
0
        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");
        }
Ejemplo n.º 9
0
 public abstract void VisitConcreteElementA(
     ConcreteElementA concreteElementA);
Ejemplo n.º 10
0
 public abstract void VisitConcreteElementA(ConcreteElementA concreteElementA);
Ejemplo n.º 11
0
 public override void VisitConcreteElementA(ConcreteElementA concreteElementA)
 {
     Console.WriteLine("{0} is visited by {1}", concreteElementA, this);
 }
Ejemplo n.º 12
0
 public override void VisitConcreteElementA(ConcreteElementA concreteElementA)
 {
     Debug.Log(concreteElementA.GetType().Name + " visited by " + this.GetType().Name);
 }
Ejemplo n.º 13
0
 public override void VisitConcreteElementA(ConcreteElementA concreteElementA)
 {
     Console.WriteLine($@"{concreteElementA.GetType().Name}被{this.GetType().Name}访问");
 }
Ejemplo n.º 14
0
 public abstract string Visit(ConcreteElementA element);
Ejemplo n.º 15
0
 public void Visit(ConcreteElementA element)
 {
     Console.WriteLine("Visiting " + element.Name + " ...");
 }
Ejemplo n.º 16
0
 public override void VisitA(ConcreteElementA concreteElementA)
 {
     concreteElementA.OperationA();
 }
Ejemplo n.º 17
0
 public override string Visit(ConcreteElementA element)
 {
     return($"{element.GetType().Name} visited by {GetType().Name}");
 }
Ejemplo n.º 18
0
 public override void VisitConcreteElementA(ConcreteElementA concreteElementA)
 {
     Console.WriteLine("{0} visit {1}", this.GetType().Name, concreteElementA.GetType().Name);
 }
Ejemplo n.º 19
0
 public override void VisitConcreteElementA(ConcreteElementA element)
 {
     Console.WriteLine($"{element.GetType().Name} 被 {GetType().Name} 访问");
 }
Ejemplo n.º 20
0
 public void VisitConcreteElementA(ConcreteElementA concreteElementA)
 {
     Console.WriteLine("visitConcreteElementA by ConcreteVisitorA");
 }
Ejemplo n.º 21
0
 public void VisitorElementA(ConcreteElementA element)
 {
     // Concrete visitor 1 on element a
 }
Ejemplo n.º 22
0
 public void Visit(ConcreteElementA elementA)
 {
     elementA.FeatureA();
 }
Ejemplo n.º 23
0
 public override string Visit(ConcreteElementA element)
 {
     return $"{element.GetType().Name} visited by {GetType().Name}";
 }
Ejemplo n.º 24
0
 public abstract string Visit(ConcreteElementA element);