// 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); }
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()); }