【C#】Behavioral Patterns Visitor Mode

The Visitor design pattern represents an operation to be performed on the elements of an object structure. This pattern lets you define a new operation (ObjectStructure) without changing the classes of the elements on which it operates.


简单来说~ 此模式让你能定义一个新的操作来访问对象结构~ 无须动到原本的结构~


学习目标: 访问者模式的概念及实务

学习难度: ☆☆☆


using System;using System.Collections.Generic;namespace ConsoleApp1{    //为对象结构中的每个 ConcreteElement 类声明一个访问操作。    public abstract class Visitor    {        public abstract void VisitConcreteProductA(ProductA concreteProductA);    }    //实现访问者声明的每个操作。每个操作都实现了为结构中的相应类或对象定义的算法片段。    public class ConcreteVisitor1 : Visitor    {        public override void VisitConcreteProductA(ProductA concreteProductA)        {            Console.WriteLine(concretePlayerA.GetType().Name + " visited by "+this.GetType().Name);        }    }    //定义一个以访问者为参数的 Accept 操作    public abstract class Product    {        public abstract void Accept(Visitor visitor);    }    //实现以访问者为参数的 Accept 操作    public class ProductA : Product    {        public override void Accept(Visitor visitor)        {            visitor.VisitConcreteProductA(this);        }    }    //可以提供高级界面以允许访问者访问其元素,例如列表或集合    public class ProductManager    {        List<Product> products = new List<Product>();        public void Attach(Product product)        {            products.Add(product);        }        public void Detach(Product product)        {            products.Remove(product);        }        public void Accept(Visitor visitor)        {            foreach (Product product in products)            {                product.Accept(visitor);            }        }    }    public class MainProgram    {        public static void Main(string[] args)        {            ProductManager productManager = new ProductManager();            Product productA = new ProductA();            productManager.Attach(productA);            ConcreteVisitor1 visitor1 = new ConcreteVisitor1();            productManager.Accept(visitor1);        }    }}

参考资料:

https://www.dofactory.com/net/visitor-design-pattern


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章