【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); 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 编辑过