访问者模式是一种将数据结构与数据操作分离的设计模式。它允许你定义新的操作,而无需改变所操作的元素类。该模式的核心思想是,通过一个访问者类,可以访问不同类的元素,而不用关心这些元素的具体类。
实现方式:
accept(Visitor visitor)
方法。适用场景:
优点:
缺点:
代码示例
interface Element
{
void Accept(Visitor visitor);
}
class ConcreteElementA : Element
{
public void Accept(Visitor visitor)
{
visitor.VisitElementA(this);
}
}
class ConcreteElementB : Element
{
public void Accept(Visitor visitor)
{
visitor.VisitElementB(this);
}
}
interface Visitor
{
void VisitElementA(ConcreteElementA element);
void VisitElementB(ConcreteElementB element);
}
class ConcreteVisitor : Visitor
{
public void VisitElementA(ConcreteElementA element)
{
// 实现对ConcreteElementA的访问逻辑
}
public void VisitElementB(ConcreteElementB element)
{
// 实现对ConcreteElementB的访问逻辑
}
}
class Client
{
static void Main(string[] args)
{
Element elementA = new ConcreteElementA();
Element elementB = new ConcreteElementB();
Visitor visitor = new ConcreteVisitor();
elementA.Accept(visitor);
elementB.Accept(visitor);
}
}