LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】访问者设计模式

admin
2026年1月26日 18:40 本文热度 134

访问者设计模式(Visitor Pattern)是一种行为设计模式,它允许你在不修改对象结构的情况下向其添加新的操作。

这种模式在需要对一组对象执行多种操作时特别有用,每个操作可以封装在独立的访问者对象中。

访问者模式由以下几个角色组成:

1、访问者(Visitor):声明一个访问操作的方法,用于每一个具体元素类。

2、具体访问者(Concrete Visitor):实现每个由Visitor声明的操作。

3、元素(Element):声明一个接受访问者对象的接口。

4、具体元素(Concrete Element):实现Element接口,定义一个接受访问者访问的具体操作。

5、对象结构(Object Structure):可以是组合结构(如树、图等),也可以是一个集合。

它能枚举其包含的元素,让访问者访问它的每一个元素。

代码示例:

internal class Program {     static void Main(string[] args)     {         /*          访问者设计模式         可以在不修改现有对象结构的情况下,定义对这些对象的操作         1、访问者接口         2、具体访问者         3、元素接口         4、具体元素         5、对象结构          */         IVisitor visitor = new XiaoMing();         IElement element = new Dog();         IElement element2 = new Cat();         IVisitor visitor2 = new ZhangSan();         element.Accept(visitor);         element2.Accept(visitor);         element.Accept(visitor2);         element2.Accept(visitor2);         //element.Accept(visitor2);         Console.ReadKey();     }     //访问者接口     public interface IVisitor     {         void Visit(IElement visitor);     }     //具体访问者     public class XiaoMing : IVisitor     {         public void Visit(IElement visitor)         {             Console.WriteLine($"小明喜欢的宠物 {visitor.GetMessage()}");         }     }     //具体访问者     public class ZhangSan : IVisitor     {         public void Visit(IElement visitor)         {             Console.WriteLine($"张三喜欢的宠物 {visitor.GetMessage()}");         }     }     //元素接口     public interface IElement     {         void Accept(IVisitor visitor);         string GetMessage();     }     //具体元素     public class Dog : IElement     {         public void Accept(IVisitor visitor)         {             visitor.Visit(this);         }         public string GetMessage()         {             return "Dog";         }     }     //具体元素     public class Cat : IElement     {         public void Accept(IVisitor visitor)         {             visitor.Visit(this);         }         public string GetMessage()         {             return "Cat";         }     } }

这种模式主要是用于将数据结构和操作分离,使得操作可以在不改变结构的情况下进行扩展。


该文章在 2026/1/26 18:40:59 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved