{C#}设计模式辨析.访问者
作者:
码农猫爸 | 来源:发表于
2021-08-12 08:03 被阅读0次背景
- 访问者可操作多个元素类(数据)中的功能,元素类之间可以无关联。
- 如访问目的不同,可创建多个访问者。
示例
using static System.Console;
namespace DesignPattern_Visitor
{
// 访问者接口,可执行所有被访类的功能
public interface IVisitor
{
void PatCat(Cat cat); // 必须传参具体类
void WalkDog(Dog dog);
}
// 具体访问者
public class Visitor : IVisitor
{
private readonly string name;
public Visitor(string name)
{
this.name = name;
}
public void PatCat(Cat cat) => cat.Pat(name);
public void WalkDog(Dog dog) => dog.Walk(name);
}
// 被访类接口
public interface IElement
{
void Accept(IVisitor visitor); // 运行时,执行访问动作
}
// 具体被访类,多个之间可无关联
public class Cat : IElement
{
public void Accept(IVisitor visitor)
=> visitor.PatCat(this);
public void Pat(string name)
=> WriteLine($"{name} is patting a cat.");
}
public class Dog : IElement
{
public void Accept(IVisitor visitor)
=> visitor.WalkDog(this);
public void Walk(string name)
=> WriteLine($"{name} is walking a dog.");
}
class Program
{
static void Main(string[] args)
{
var visitor = new Visitor("Zhang");
var cat = new Cat();
cat.Accept(visitor);
var dog = new Dog();
dog.Accept(visitor);
ReadKey();
}
}
}
本文标题:{C#}设计模式辨析.访问者
本文链接:https://www.haomeiwen.com/subject/melcbltx.html
网友评论