26 C#设计模式-访问者模式.ppt
《26 C#设计模式-访问者模式.ppt》由会员分享,可在线阅读,更多相关《26 C#设计模式-访问者模式.ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、www.ChinaSA.infoDDesign esign P Patternsatterns访问者模式访问者模式访问者模式访问者模式刘刘 伟伟(Sunny)weiliu_www.ChinaSA.info大纲w访问者模式概述w访问者模式的结构与实现w访问者模式的应用实例w访问者模式与组合模式联用w访问者模式的优缺点与适用环境www.ChinaSA.info访问者模式概述w医院处方单处理示意图www.ChinaSA.info访问者模式概述w分析处方单:处方单:药品信息的集合,包含一种或多种不同类型的药品信息不同类型的工作人员(例如划价人员和药房工作人员)在操作同一个药品信息集合时将提供不同的处理
2、方式可能会增加新类型的工作人员来操作处方单软件开发:软件开发:处方单处方单 对象结构对象结构药品信息药品信息 元素元素工作人员工作人员 访问者访问者www.ChinaSA.info访问者模式概述w分析对象结构中存储了对象结构中存储了多种不同类型多种不同类型的对象信息的对象信息对同一对象结构中的元素的对同一对象结构中的元素的操作方式并不唯一操作方式并不唯一,可能,可能需要需要提供多种不同的处理方式提供多种不同的处理方式还有可能还有可能增加新的处理方式增加新的处理方式访问者模式访问者模式以不同的方式操以不同的方式操作复杂对象结构作复杂对象结构www.ChinaSA.info访问者模式概述w访问者模
3、式的定义对象行为型对象行为型模式模式访访问问者者模模式式:表示一个作用于某对对象象结结构构中的各个元素的操作。访问者模式让你可可以以在在不不改改变变各各元元素素的的类类的的前前提提下下定定义义作用于作用于这这些元素的新操作些元素的新操作。Visitor Pattern:Represent an operation to be performed on the elements of an object structure.Visitor lets you define a new operation without changing the classes of the elements on
4、 which it operates.www.ChinaSA.info访问者模式概述w访问者模式的定义它为它为操作存储不同类型元素的对象结操作存储不同类型元素的对象结构构提供了一种解决方案提供了一种解决方案用户用户可以对不同类型的元素施加不同可以对不同类型的元素施加不同的操作的操作www.ChinaSA.info访问者模式的结构与实现w访问者模式的结构www.ChinaSA.info访问者模式的结构与实现w访问者模式的结构访问者模式包含以下访问者模式包含以下5个角色:个角色:Visitor(抽象访问者)ConcreteVisitor(具体访问者)Element(抽象元素)ConcreteEle
5、ment(具体元素)ObjectStructure(对象结构)www.ChinaSA.info访问者模式的结构与实现w访问者模式的实现典型的抽象访问者类代码:典型的抽象访问者类代码:abstract class Visitorpublic abstract void Visit(ConcreteElementA elementA);public abstract void Visit(ConcreteElementB elementB);public void Visit(ConcreteElementC elementC)/元素元素ConcreteElementC的的操作操作代代码码www.
6、ChinaSA.info访问者模式的结构与实现w访问者模式的实现典型的具体访问者类代码:典型的具体访问者类代码:class ConcreteVisitor:Visitorpublic override void Visit(ConcreteElementA elementA)/元素ConcreteElementA的操作代码 public override void Visit(ConcreteElementB elementB)/元素ConcreteElementB的操作代码 www.ChinaSA.info访问者模式的结构与实现w访问者模式的实现典型的抽象元素类代码:典型的抽象元素类代码:i
7、nterface Element void Accept(Visitor visitor);www.ChinaSA.info访问者模式的结构与实现w访问者模式的实现典型的具体元素类代码:典型的具体元素类代码:class ConcreteElementA:Element public void Accept(Visitor visitor)visitor.Visit(this);public void OperationA()/业务方法www.ChinaSA.info访问者模式的结构与实现w访问者模式的实现双重分派机制双重分派机制(1)调用具体元素类的Accept(Visitor visitor
8、)方法,并将Visitor子类对象作为其参数(2)在具体元素类Accept(Visitor visitor)方法内部调用传入的Visitor对象的Visit()方法,例如Visit(ConcreteElementA elementA),将当前具体元素类对象(this)作为参数,例如visitor.Visit(this)(3)执行Visitor对象的Visit()方法,在其中还可以调用具体元素对象的业务方法ConcreteElementA.Accept(Visitor visitor)ConcreteVisitorA.Visit(ConcreteElementA elementA)Concret
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 26 C#设计模式-访问者模式 C# 设计 模式 访问者
限制150内