20061013pm--C#面向对象设计模式纵横谈(24)(行为型模.pdf
《20061013pm--C#面向对象设计模式纵横谈(24)(行为型模.pdf》由会员分享,可在线阅读,更多相关《20061013pm--C#面向对象设计模式纵横谈(24)(行为型模.pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#面向对象设计模式纵横谈24.Visitor 访问者(行为型模式)李建忠设计模式论坛:上海祝成科技 高级培训讲师类层次结构的变化类层次结构中可能经常由于引入新的操作,从而将类型变得脆弱类层次结构中可能经常由于引入新的操作,从而将类型变得脆弱动机(Motivation)在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。如何在不更改类层次结构的前提下,在运行时根据需要透明地为类层次结构上的各个类动态添加新的操作,从而避免上述问题?意图(Intent)表示一个作用于某对象结构中的各元素的操
2、作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。设计模式GoF例说Visitor模式应用Codes in VS.NET结构(Structure)Visitor模式的几个要点 Visitor模式通过所谓双重分发(double dispatch)来实现在不更改Element类层次结构的前提下,在运行时透明地为类层次结构上的各个类动态添加新的操作。所谓双重分发即 Visitor模式中间包括了两个多态分发(注意其中的多态机制):第一个为accept方法的多态辨析;第二个为visit方法的多态辨析。Visitor模式的最大缺点在于扩展类层次结构(增添新的Element子类),会导致Visitor类的改变。因此Vistor模式适用于“Element类层次结构稳定,而其中的操作却经常面临频繁改动”。推荐资源 设计模式:可复用面向对象软件的基础GoF 面向对象分析与设计Grady Booch 敏捷软件开发:原则、模式与实践Robert C.Martin 重构:改善既有代码的设计 Martin Fowler Refactoring to PatternsJoshua Kerievsky获取更多MSDN资源 MSDN中文网站中文网站http:/ MSDN中文网络广播中文网络广播http:/ MSDN Flashhttp:/ MSDN开发中心开发中心http:/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 20061013 pm C# 面向 对象 设计 模式 纵横谈 24 行为
限制150内