幸运星空

Lucker的程序人生

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

(根据MSDN WebCast相关课程整理)

类层次结构中可能经常由于引入新的操作(虚方法),从而将类型变得脆弱。

如下图是一幅类继承关系的层次结构图,

clip_image002

如果在父类中直接增加一个虚方法时,所有的子类都可能需要改变。如何在不改变类层次与结构的前提下,在运行为根据需要透明的为各个类添加新的方法与操作。

GoF:表示一个作用于某种对象结构中的各元素的操作。它可以不改变各元素的类的前提下,定义作用于这些元素的新的操作。

clip_image004

没有采用Visitor模式时:

clip_image006

应用Visitor模式,需要在父类中事先准备好一个方法,以便接收事后添加的新操作,并提供一个Visitor类,这个类中包括父类的所有子类的相应操作。

clip_image008

在父类的各子类中,实现事先准备好的方法,如下:

clip_image010

前是预先准备好的父类及其子类应该具体的条件,以下开始自己添加新的操作。

在MyVisitor中具体实现要添加的操作:

clip_image012

将新添加的操作和父类关联:

clip_image014

具体调用的方式与步骤:

clip_image016

C#中的扩展方法功能就是Visitor模式的典型应用。

<完>
posted on 2012-03-23 15:01  Lucker  阅读(726)  评论(1编辑  收藏  举报