前言
这不是一个特别常用的模式。不做太多介绍,以后学到再补充吧~
访问者模式
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
应用
适用于数据结构相对稳定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。如果系统有比较稳定的数据结构,又有易于变化的算法,使用访问者模式比较合适
目的是要把处理从数据结构分析出来。
访问者模式的能力和复杂性是把双刃剑,只有当真正需要用它的时候,才考虑使用。不要误用或滥用。
优点:增加新的操作容易
缺点:使增加新的数据结构变困难了
代码展示
抽象状态类与抽象人类
//“状态”的抽象类
abstract class Action
{
//得到男人结论或反应
public abstract void GetManConclusion(Man concreteElementA);
//得到女人结论或反应
public abstract void GetWomanConclusion(Woman concreteElementB);
}
//“人”的抽线类
abstract class Person
{
//接受
public abstract void Accept(Actio