예제 #1
0
    // Use this for initialization
    void Start()
    {
        List <IVisitable> visitable = new List <IVisitable>();

        visitable.Add(new VisitorableA(1, 20));
        visitable.Add(new VisitorableA(3, 20));
        visitable.Add(new VisitorableA(20, 80));

        VisitorA visitorA = new VisitorA(); // 나이를 더해주는 방문자

        for (int i = 0; i < visitable.Count; i++)
        {
            visitable[i].Appect(visitorA); //
        }
        Debug.Log("AGE :" + visitorA.ageSum);

        // 경험치를 더해주는 방문자
        VisitorB visitorB = new VisitorB(); // 나이를 더해주는 방문자

        for (int i = 0; i < visitable.Count; i++)
        {
            visitable[i].Appect(visitorB); //
        }
        Debug.Log("EXP :" + visitorB.totalEXP);
    }
        public void Visitor_Test()
        {
            var structure = new Structure();
            var e1        = new Element01()
            {
                State = 0
            };
            var e2 = new Element02()
            {
                State = 1
            };
            var v1 = new VisitorA();
            var v2 = new VisitorB();

            structure.Elements.Add(e1);
            structure.Elements.Add(e2);

            structure.Accept(v1);

            Assert.IsTrue(e1.State == 2 && e2.State == 3);

            structure.Accept(v2);

            Assert.IsTrue(e1.State == 12 && e2.State == 13);
        }
예제 #3
0
        public void VisitorsTest()
        {
            IVisitor visitorA = new VisitorA();
            IVisitor visitorB = new VisitorB();

            Element elementA = new ElementA();
            Element elementB = new ElementB();

            elementA.Accept(visitorA);
            Assert.Equal("Visitor A For Element A", elementA.ProcessElement());

            elementA.Accept(visitorB);
            Assert.Equal("Visitor B For Element A", elementA.ProcessElement());

            elementB.Accept(visitorA);
            Assert.Equal("Visitor A For Element B", elementB.ProcessElement());

            elementB.Accept(visitorB);
            Assert.Equal("Visitor B For Element B", elementB.ProcessElement());
        }