(根据MSDN WebCast相关课程整理)
类层次结构中可能经常由于引入新的操作(虚方法),从而将类型变得脆弱。
如下图是一幅类继承关系的层次结构图,
如果在父类中直接增加一个虚方法时,所有的子类都可能需要改变。如何在不改变类层次与结构的前提下,在运行为根据需要透明的为各个类添加新的方法与操作。
GoF:表示一个作用于某种对象结构中的各元素的操作。它可以不改变各元素的类的前提下,定义作用于这些元素的新的操作。
没有采用Visitor模式时:
应用Visitor模式,需要在父类中事先准备好一个方法,以便接收事后添加的新操作,并提供一个Visitor类,这个类中包括父类的所有子类的相应操作。
在父类的各子类中,实现事先准备好的方法,如下:
前是预先准备好的父类及其子类应该具体的条件,以下开始自己添加新的操作。
在MyVisitor中具体实现要添加的操作:
将新添加的操作和父类关联:
具体调用的方式与步骤:
C#中的扩展方法功能就是Visitor模式的典型应用。
<完>※※※※※※※※※※※※※※--我的程序人生--※※※※※※※※※※※※※※