设计模式泛泛谈之模板方法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式泛泛谈之模板方法

客户第一 | 阳光沟通 | 团队协作 | 拥抱变化 | 学习成长 * 行为准则:尊重·简单·重用·检查·并行·勇气·反馈·改善·认真·责任 价值观:客户第一 | 阳光沟通 | 团队协作 | 拥抱变化 | 学习成长 设计模式泛泛谈之模板方法 视讯终端产品线/中间件开发部 平台软件部 黄大勇 2010-01 为什么要取名“泛泛谈” 这里的“泛泛谈”既不是指深度上点到为止 ,也不是指广度上包罗万象,而是强调用灵活、发散、开放、变通的思维来看待设计模式。郭沫若说过“人是活的,书是死的。活人读死书,可以把书读活。死书读活人,可以把人读死 ” 。 几个基本的理念 为了把设计模式“读活”,每一次培训我们都会不厌其烦地重复一些最基本的理念。这些理念包括: 设计模式无处不在; 每个设计模式都不是独立的、死板的; 设计模式的本质在思想,形式在语言; 设计模式的选择是基于场景和意图的; 建筑领域的设计模式 设计模式的三类变形 形式上变化,本质不变 变为另一种设计模式 几种设计模式间相互协作 如果只介绍一种设计模式 吃,我所欲也,瘦,亦我所欲也,二者不可得兼…… 吃?不吃? 模板方法的优点之一——简单 人物: 周爱民,盛大网络平台架构师, 著有《Delphi源代码分析》和《大道至简》。 模板方法的优点之一——简单 public void userManual(){ AbstractClass myObject = new ConcreteClass(); myObject.templateMethod(); } 模板方法的优点之二——实用 它是对流程进行抽象和复用的最常见方法。 它广泛应用于框架设计,遍布于各种软件开发IDE中。 它可以用各种语言实现,而不仅限于面向对象。 哲学流派介绍: 实用主义是在美国土壤上生长出来的一个哲学流派,它于十九世纪七十年代在美国露头。1871-1874年间在哈佛大学进行活动的“形而上学俱乐部”被认为是美国第一个实用主义组织。俱乐部的主持人,是后来被认为是实用主义创始人的皮尔士,最杰出的代表人物包括詹姆士、杜威等人。 总结与反思 到此为止了吗? 模板方法不过如此! 都收获了些什么呢? 设计模式的认知三步曲 分析、独特见解 发散、变形 初识 了解基本的结构图、意图、使用场景等。 1、进行特性分析,理解内涵和外延,提取注意点,找出与其它设计模式的区别与联系等。 2、结总自己的心得体会,提炼一些独特见解。 三种变形: 1、形式改变,本质不变。 2、变为另一种设计模式。 3、与其它设计模式协作; 特性分析——名称分析 “模板”是个形容词,“方法”是个名词,这里的“方法”即通常说的函数。“模板方法”是指一个可以通用的函数。在类图中“模板方法”就是templateMethod()。该函数之所以通用是因为它调用了一些动态绑定的函数primitiveMethod1()和primitiveMethod2()。 特性分析——意图分析 GOF:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 [关键词] 操作中的算法:模板方法是针对流程(算法)的一种设计模式。 骨架:模板方法提取了流程的步骤序列。 步骤延迟:步骤的实现有多个,分别放在不同子类中去实现。 某些:可能不是所有的步骤都在子类中实现。 [潜台词] 1、子类不可以改变算法的结构,即不可以改变模板方法templateMethod(),如果在JAVA中该方法应当加上final,这样在子类中就不可以重写该方法。 2、子类必须实现父类的抽象方法,每个抽象方法即是组成算法的一个步骤。 3、模板方法适用于步骤序列确定,但部分步骤的实现不确定的情况。 特性分析——变与不变 primitiveMethod1()等基类中的抽象方法。子类必须实现这些抽象方法才能实例化。 ??? 部分步骤 一定会变的 一些在基类中已经实现的方法,子类中可以选择重写该方法,通常这种方法前可以加protected关键字。 部分步骤 可能要变的 templateMethod()方法。在基类中已经实现,子类中不能重写该方法,用JAVA实现时该方法前要加final字键字。 算法的骨架(算法的结构) 不变的 类图上 概念上 变化分级 变化分级 抽象分级 耦合分级 特性分析——数量分析 =1,至少有一个抽象方法 部分步骤 一定会变的 =0,可能有,也可能没有,数量不确定 部分步骤 可能要变的 =1,有且只有一个 算法的骨架(结构) 不变的 数量 概念上 变化分级 某种类型的方法数量上发生变化后,可能仍然是模板方法。这里有三种类型的方法

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档