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

    25 C#设计模式-模板方法模式.ppt

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

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

    25 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分析请客吃饭:请客吃饭:(1)点单点单 (2)吃东西吃东西(3)买单买单软件开发:软件开发:某个方法的实现需要某个方法的实现需要多个步骤多个步骤(类似(类似“请请客客”),其中),其中有些步骤是固定的有些步骤是固定的(类似(类似“点单点单”和和“买单买单”),而),而有些步骤并不固定有些步骤并不固定,存在可变性(类似,存在可变性(类似“吃东西吃东西”)模板方法模式:模板方法模式:基本方法基本方法(“点单点单”、“吃东西吃东西”和和“买单买单”)模板方法模板方法(“请客请客”)具体方法抽象方法www.ChinaSA.info模板方法模式概述w模板方法模式的定义类行为型类行为型模式模式模模板板方方法法模模式式:定义一个操作中算算法法的的框框架架,而将将一一些些步步骤骤延延迟迟到到子子类类中中。模板方法模式使得子类不改变一个算法的结构即可重定重定义义该算法的某些特定步某些特定步骤骤。Template Method Pattern:Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithms structure.www.ChinaSA.info模板方法模式概述w模板方法模式的定义是一种是一种基于继承的代码复用技术基于继承的代码复用技术将一些复杂流程的将一些复杂流程的实现步骤实现步骤封装在一系列封装在一系列基本方法基本方法中中在抽象父类中提供一个称之为在抽象父类中提供一个称之为模板方法模板方法的方法来的方法来定义定义这些基本方法的执行次序这些基本方法的执行次序,而通过其子类来覆盖某些,而通过其子类来覆盖某些步骤,从而使得步骤,从而使得相同的算法框架相同的算法框架可以可以有不同的执行结有不同的执行结果果www.ChinaSA.info模板方法模式的结构与实现w模板方法模式的结构www.ChinaSA.info模板方法模式的结构与实现w模板方法模式的结构模板方法模式包含以下两个角色:模板方法模式包含以下两个角色:AbstractClass(抽象类)ConcreteClass(具体子类)www.ChinaSA.info模板方法模式的结构与实现w模板方法模式的实现模板方法模板方法(Template Method)基本方法基本方法(Primitive Method)抽象方法(Abstract Method)具体方法(Concrete Method)钩子方法(Hook Method)www.ChinaSA.info模板方法模式的结构与实现w模板方法模式的实现钩子方法钩子方法(1)“挂钩”方法:IsXXX(),返回类型为bool类型(2)空方法/模板方法模板方法public void TemplateMethod()Open();Display();/通通过钩过钩子方法来确定某步子方法来确定某步骤骤是否是否执执行行if(IsPrint()Print();/钩钩子方法子方法public bool IsPrint()return true;www.ChinaSA.info模板方法模式的结构与实现w模板方法模式的实现抽象类典型代码:抽象类典型代码:abstract class AbstractClass/模板方法模板方法public void TemplateMethod()PrimitiveOperation1();PrimitiveOperation2();PrimitiveOperation3();/基本方法基本方法具体方法具体方法public void PrimitiveOperation1()/实现代码/基本方法基本方法抽象方法抽象方法 public abstract void PrimitiveOperation2();/基本方法基本方法钩钩子方法子方法public virtual void PrimitiveOperation3()www.ChinaSA.info模板方法模式的结构与实现w模板方法模式的实现具体子类典型代码:具体子类典型代码:class ConcreteClass:AbstractClass public override void PrimitiveOperation2()/实现代码public override void PrimitiveOperation3()/实现代码www.ChinaSA.info模板方法模式的应用实例w实例说明某软件公司要为某银行的业务支撑系统开发一个利息计算模块,利息的计算流程如下:(1)系统根据账号和密码验证用户信息,如果用户信息错误,则系统显示出错提示。(2)如果用户信息正确,则根据用户类型的不同使用不同的利息计算公式计算利息(如活期账户和定期账户具有不同的利息计算公式)。(3)系统显示利息。现使用模板方法模式设计该利息计算模块。www.ChinaSA.info模板方法模式的应用实例w实例类图银行利息计算模块结构图银行利息计算模块结构图www.ChinaSA.info模板方法模式的应用实例w实例代码(1)Account:账户类,充当抽象类:账户类,充当抽象类(2)CurrentAccount:活期账户类,充当具体子类:活期账户类,充当具体子类(3)SavingAccount:定期账户类,充当具体子类:定期账户类,充当具体子类(4)配置文件配置文件App.config(5)Program:客户端测试类:客户端测试类演示演示演示演示参考代码参考代码(DesignPatternTemplateMethodSample)www.ChinaSA.info模板方法模式的应用实例w结果及分析如果需要更换或增加如果需要更换或增加具体子类具体子类,无须修改源代码,只,无须修改源代码,只需修改配置文件需修改配置文件App.config即可,即可,符合开闭原则符合开闭原则 账号:张无忌密码:123456按定期利率按定期利率计计算利息!算利息!显示利息!www.ChinaSA.info钩子方法的使用w实例某软件公司要为销售管理系统提供一个数据图表显示功能,该功能的实现包括以下几个步骤:(1)从数据源获取数据。(2)将数据转换为XML格式。(3)以某种图表方式显示XML格式的数据。该功能支持多种数据源和多种图表显示方式,但所有的图表显示操作都基于XML格式的数据,因此可可能能需需要要对对数数据据进进行行转转换换,如如果果从从数数据据源源获获取的数据已取的数据已经经是是XML数据数据,则则无无须转换须转换。www.ChinaSA.info钩子方法的使用w结构数据图表显示功能结构图数据图表显示功能结构图www.ChinaSA.info钩子方法的使用w实现演示演示演示演示参考代码参考代码(DesignPatternTemplateMethodSample)/DataViewer.csusing System;namespace TemplateMethodSample abstract class DataViewer /抽象方法:获取数据 public abstract void GetData();/具体方法:转换数据 public void ConvertData()Console.WriteLine(将数据转换为XML格式。);/抽象方法:显示数据 public abstract void DisplayData();/钩钩子方法:判断是否子方法:判断是否为为XML格式的数据格式的数据 public virtual bool IsNotXMLData()return true;/模板方法 public void Process()GetData();/如果不是如果不是XML格式的数据格式的数据则进则进行数据行数据转换转换 if(IsNotXMLData()ConvertData();DisplayData();www.ChinaSA.info模板方法模式的优缺点与适用环境w模式优点在父类中形式化地定义一个算法,而由它的在父类中形式化地定义一个算法,而由它的子类来实现细节的处理,子类来实现细节的处理,在子类实现详细的在子类实现详细的处理算法时并不会改变算法中步骤的执行次处理算法时并不会改变算法中步骤的执行次序序提取了类库中的公共行为,提取了类库中的公共行为,将公共行为放在将公共行为放在父类中父类中,而通过其子类来实现不同的行为,而通过其子类来实现不同的行为可实现一种反向控制结构可实现一种反向控制结构,通过子类覆盖父,通过子类覆盖父类的钩子方法来决定某一特定步骤是否需要类的钩子方法来决定某一特定步骤是否需要执行执行更换和增加新的子类很方便,更换和增加新的子类很方便,符合单一职责符合单一职责原则和开闭原则原则和开闭原则www.ChinaSA.info模板方法模式的优缺点与适用环境w模式缺点需要为每一个基本方法的不同实现提供需要为每一个基本方法的不同实现提供一个子类,一个子类,如果父类中可变的基本方法如果父类中可变的基本方法太多,将会导致类的个数增加太多,将会导致类的个数增加,系统会,系统会更加庞大,设计也会更加抽象(可结合更加庞大,设计也会更加抽象(可结合桥接模式桥接模式)www.ChinaSA.info模板方法模式的优缺点与适用环境w模式适用环境一次性实现一个算法的不变部分一次性实现一个算法的不变部分,并将,并将可变的行为留给子类来实现可变的行为留给子类来实现各子类中各子类中公共的行为公共的行为应被提取出来,并应被提取出来,并集中到一个集中到一个公共父类公共父类中,以中,以避免代码重避免代码重复复需要需要通过子类来决定父类算法中某个步通过子类来决定父类算法中某个步骤是否执行骤是否执行,实现,实现子类对父类的反向控子类对父类的反向控制制www.ChinaSA.info思考w在模板方法模式中,钩子方法如何实现子类控制父类的行为?www.ChinaSA.infoENDEND

    注意事项

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

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




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

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

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

    收起
    展开