Beispiel #1
0
 public void VisitorDemo()
 {
     for (int i = 0; i < 10; i++)
     {
         var e = ObjectStruture.CreateElement();
         Thread.Sleep(50);
         e.Accept(new Visitor());
     }
 }
Beispiel #2
0
        /// <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()}");
        }
Beispiel #3
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);
        }