static void Main(string[] args) { //创建被访问的元素 ConcreteElementA ce1 = new ConcreteElementA("元素A"); ConCreteElementB ce2 = new ConCreteElementB("元素B"); //创建访问者 ConCreteVistorA c1 = new ConCreteVistorA(); ConCreteVistorB c2 = new ConCreteVistorB(); //访问 把访问者给元素 然后元素内部执行访问者访问自己的方法 ce1.Accept(c1); ce1.Accept(c2); ce2.Accept(c2); Console.Read(); }
public override void VisitConcreteElementA( ConcreteElementA concreteElementA) { Console.WriteLine("{0} visited by {1}", concreteElementA.GetType().Name, this.GetType().Name); }
public abstract void VisitConcreteElementA(ConcreteElementA concreteElementA);
public override void VisitConcreteElementA(ConcreteElementA concreteElementA) { Console.WriteLine("{0}被{1}访问", concreteElementA.GetType().Name, this.GetType().Name); }
public override void VisitConcreteElementA(ConcreteElementA concreteElementA) { Console.WriteLine($"{concreteElementA.GetType().Name}被{this.GetType().Name}访问"); }
public override void VisitConcreteElementA(ConcreteElementA concreteElementA) { throw new NotImplementedException(); }