欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    26 C#设计模式-访问者模式.ppt

    • 资源ID:69533142       资源大小:3.38MB        全文页数:25页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    26 C#设计模式-访问者模式.ppt

    www.ChinaSA.infoDDesign esign P Patternsatterns访问者模式访问者模式访问者模式访问者模式刘刘 伟伟(Sunny)weiliu_www.ChinaSA.info大纲w访问者模式概述w访问者模式的结构与实现w访问者模式的应用实例w访问者模式与组合模式联用w访问者模式的优缺点与适用环境www.ChinaSA.info访问者模式概述w医院处方单处理示意图www.ChinaSA.info访问者模式概述w分析处方单:处方单:药品信息的集合,包含一种或多种不同类型的药品信息不同类型的工作人员(例如划价人员和药房工作人员)在操作同一个药品信息集合时将提供不同的处理方式可能会增加新类型的工作人员来操作处方单软件开发:软件开发:处方单处方单 对象结构对象结构药品信息药品信息 元素元素工作人员工作人员 访问者访问者www.ChinaSA.info访问者模式概述w分析对象结构中存储了对象结构中存储了多种不同类型多种不同类型的对象信息的对象信息对同一对象结构中的元素的对同一对象结构中的元素的操作方式并不唯一操作方式并不唯一,可能,可能需要需要提供多种不同的处理方式提供多种不同的处理方式还有可能还有可能增加新的处理方式增加新的处理方式访问者模式访问者模式以不同的方式操以不同的方式操作复杂对象结构作复杂对象结构www.ChinaSA.info访问者模式概述w访问者模式的定义对象行为型对象行为型模式模式访访问问者者模模式式:表示一个作用于某对对象象结结构构中的各个元素的操作。访问者模式让你可可以以在在不不改改变变各各元元素素的的类类的的前前提提下下定定义义作用于作用于这这些元素的新操作些元素的新操作。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 which it operates.www.ChinaSA.info访问者模式概述w访问者模式的定义它为它为操作存储不同类型元素的对象结操作存储不同类型元素的对象结构构提供了一种解决方案提供了一种解决方案用户用户可以对不同类型的元素施加不同可以对不同类型的元素施加不同的操作的操作www.ChinaSA.info访问者模式的结构与实现w访问者模式的结构www.ChinaSA.info访问者模式的结构与实现w访问者模式的结构访问者模式包含以下访问者模式包含以下5个角色:个角色:Visitor(抽象访问者)ConcreteVisitor(具体访问者)Element(抽象元素)ConcreteElement(具体元素)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.ChinaSA.info访问者模式的结构与实现w访问者模式的实现典型的具体访问者类代码:典型的具体访问者类代码:class ConcreteVisitor:Visitorpublic override void Visit(ConcreteElementA elementA)/元素ConcreteElementA的操作代码 public override void Visit(ConcreteElementB elementB)/元素ConcreteElementB的操作代码 www.ChinaSA.info访问者模式的结构与实现w访问者模式的实现典型的抽象元素类代码:典型的抽象元素类代码:interface 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)方法,并将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)ConcreteElementA.OperationA()www.ChinaSA.info访问者模式的结构与实现w访问者模式的实现典型的对象结构代码:典型的对象结构代码:using System;using System.Collections.Generic;class ObjectStructure private List list=new List();/定定义义一一个个集集合合用用于于存存储储元素元素对对象象/接受接受访问访问者的者的访问访问操作操作public void Accept(Visitor visitor)foreach(Object obj in list)(Element)obj).Accept(visitor);/遍遍历访问历访问集合中的每一个元素集合中的每一个元素 public void AddElement(Element element)list.Add(element);public void RemoveElement(Element element)list.Remove(element);www.ChinaSA.info访问者模式的应用实例w实例说明某公司OA系统中包含一个员工信息管理子系统,该公司员工包括正式员工和临时工,每周人力资源部和财务部等部门需要对员工数据进行汇总,汇总数据包括员工工作时间、员工工资等。该公司基本制度如下:(1)正式员工每周工作时间为40小时,不同级别、不同部门的员工每周基本工资不同;如果超过40小时,超出部分按照100元/小时作为加班费;如果少于40小时,所缺时间按照请假处理,请假所扣工资以80元/小时计算,直到基本工资扣除到零为止。除了记录实际工作时间外,人力资源部需记录加班时长或请假时长,作为员工平时表现的一项依据。(2)临时工每周工作时间不固定,基本工资按小时计算,不同岗位的临时工小时工资不同。人力资源部只需记录实际工作时间。人力资源部和财务部工作人员可以根据各自的需要对员工数据进行汇总处理,人力资源部负责汇总每周员工工作时间,而财务部负责计算每周员工工资。现使用访问者模式设计该系统,绘制类图并使用C#语言编码实现。www.ChinaSA.info访问者模式的应用实例w实例类图员工数据汇总模块结构图员工数据汇总模块结构图www.ChinaSA.info访问者模式的应用实例w实例代码(1)Employee:员工类,充当抽象元素类:员工类,充当抽象元素类(2)FulltimeEmployee:全职员工类,充当具体元素类:全职员工类,充当具体元素类(3)ParttimeEmployee:兼职员工类,充当具体元素类:兼职员工类,充当具体元素类(4)Department:部门类,充当抽象访问者类:部门类,充当抽象访问者类(5)FADepartment:财务部类,充当具体访问者类:财务部类,充当具体访问者类(6)HRDepartment:人力资源部类,充当具体访问者类:人力资源部类,充当具体访问者类(7)EmployeeList:员工列表类,充当对象结构:员工列表类,充当对象结构(8)配置文件配置文件App.config(9)Program:客户端测试类:客户端测试类演示演示演示演示参考代码参考代码(DesignPatternVisitorSample)www.ChinaSA.info访问者模式的应用实例w结果及分析如果需要增加或更换如果需要增加或更换具体访问者类具体访问者类,无须修改源代码,无须修改源代码,只需修改只需修改配置文件配置文件,从,从增加新的访问者增加新的访问者的角度来看,的角度来看,完全完全符合开闭原则符合开闭原则如果要在系统中增加一种新的如果要在系统中增加一种新的具体元素具体元素,必须对原有,必须对原有系统进行修改,在原有的抽象访问者类和具体访问者系统进行修改,在原有的抽象访问者类和具体访问者类中增加相应的访问方法,从类中增加相应的访问方法,从增加新的元素增加新的元素的角度来的角度来看,访问者模式看,访问者模式违背了开闭原则违背了开闭原则开闭原则的倾斜性开闭原则的倾斜性 正式员工张无忌实际工资为:3700元。正式员工杨过实际工资为:2000元。正式员工段誉实际工资为:2240元。临时工洪七公实际工资为:1600元。临时工郭靖实际工资为:1080元。正式员工张无忌实际工作时间为:45小时。正式员工张无忌加班时间为:5小时。正式员工杨过实际工作时间为:40小时。正式员工段誉实际工作时间为:38小时。正式员工段誉请假时间为:2小时。临时工洪七公实际工作时间为:20小时。临时工郭靖实际工作时间为:18小时。www.ChinaSA.info访问者模式与组合模式联用w结构www.ChinaSA.info访问者模式的优缺点与适用环境w模式优点增加新的访问操作很方便增加新的访问操作很方便将有关元素对象的访问行为集中到一将有关元素对象的访问行为集中到一个访问者对象中,而不是分散在一个个访问者对象中,而不是分散在一个个的元素类中,个的元素类中,类的职责更加清晰类的职责更加清晰让用户能够让用户能够在不修改现有元素类层次在不修改现有元素类层次结构的情况下,定义作用于该层次结结构的情况下,定义作用于该层次结构的操作构的操作www.ChinaSA.info访问者模式的优缺点与适用环境w模式缺点增加新的元素类很困难增加新的元素类很困难破坏封装破坏封装www.ChinaSA.info访问者模式的优缺点与适用环境w模式适用环境一个对象结构包含多个类型的对象,一个对象结构包含多个类型的对象,希望对希望对这些对象实施一些依赖其具体类型的操作这些对象实施一些依赖其具体类型的操作需要需要对一个对象结构中的对象进行很多不同对一个对象结构中的对象进行很多不同的且不相关的操作的且不相关的操作,并需要,并需要避免避免让这些操作让这些操作“污染污染”这些对象的类,也不希望在增加新这些对象的类,也不希望在增加新操作时修改这些类操作时修改这些类对象结构中对象对应的类很少改变对象结构中对象对应的类很少改变,但经常,但经常需要在此对象结构上定义新的操作需要在此对象结构上定义新的操作www.ChinaSA.info思考w什么是双重分派机制?如何用代码实现?www.ChinaSA.infoENDEND

    注意事项

    本文(26 C#设计模式-访问者模式.ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开