public void VisitorDemo() { for (int i = 0; i < 10; i++) { var e = ObjectStruture.CreateElement(); Thread.Sleep(50); e.Accept(new Visitor()); } }
/// <summary> /// 这个 Demo 展示了在需要对不同元素的Count 进行倍数放大并汇总的业务下,不需要修改元素类,直接在 visitor 中添加方法就完成了这个操作。 /// 这个 Demo 良好的展示了访问者模式对迭代器的补充,以及面对业务变化的灵活性。 /// </summary> public void VisitorDemo2() { var visitor = new Visitor(); for (int i = 0; i < 5; i++) { var e = ObjectStruture.CreateElement(); Thread.Sleep(50); e.Accept(visitor); } Console.WriteLine($"Total count: {visitor.GetTotalCount()}"); }
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); }