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

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

ID:44142949

大小:1.80 MB

页数:23页

时间:2019-10-19

设计模式泛泛谈之模板方法_第1页
设计模式泛泛谈之模板方法_第2页
设计模式泛泛谈之模板方法_第3页
设计模式泛泛谈之模板方法_第4页
设计模式泛泛谈之模板方法_第5页
资源描述:

《设计模式泛泛谈之模板方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设计模式泛泛谈之模板方法视讯终端产品线/中间件开发部平台软件部黄大勇2010-01为什么要取名“泛泛谈”这里的“泛泛谈”既不是指深度上点到为止,也不是指广度上包罗万象,而是强调用灵活、发散、开放、变通的思维来看待设计模式。郭沫若说过“人是活的,书是死的。活人读死书,可以把书读活。死书读活人,可以把人读死”。几个基本的理念为了把设计模式“读活”,每一次培训我们都会不厌其烦地重复一些最基本的理念。这些理念包括:设计模式无处不在;每个设计模式都不是独立的、死板的;设计模式的本质在思想,形式在语言;设计模式的选择是基于场景和意图

2、的;建筑领域的设计模式设计模式的三类变形形式上变化,本质不变变为另一种设计模式几种设计模式间相互协作如果只介绍一种设计模式吃,我所欲也,瘦,亦我所欲也,二者不可得兼……吃?不吃?模板方法的优点之一——简单人物:周爱民,盛大网络平台架构师,著有《Delphi源代码分析》和《大道至简》。模板方法的优点之一——简单publicvoiduserManual(){AbstractClassmyObject=newConcreteClass();myObject.templateMethod();}简单即美模板方法的优点之二——实用

3、它是对流程进行抽象和复用的最常见方法。它广泛应用于框架设计,遍布于各种软件开发IDE中。它可以用各种语言实现,而不仅限于面向对象。哲学流派介绍:实用主义是在美国土壤上生长出来的一个哲学流派,它于十九世纪七十年代在美国露头。1871-1874年间在哈佛大学进行活动的“形而上学俱乐部”被认为是美国第一个实用主义组织。俱乐部的主持人,是后来被认为是实用主义创始人的皮尔士,最杰出的代表人物包括詹姆士、杜威等人。总结与反思到此为止了吗?模板方法不过如此!都收获了些什么呢?设计模式的认知三步曲分析、独特见解发散、变形初识了解基本的结

4、构图、意图、使用场景等。1、进行特性分析,理解内涵和外延,提取注意点,找出与其它设计模式的区别与联系等。2、结总自己的心得体会,提炼一些独特见解。三种变形:1、形式改变,本质不变。2、变为另一种设计模式。3、与其它设计模式协作;特性分析——名称分析“模板”是个形容词,“方法”是个名词,这里的“方法”即通常说的函数。“模板方法”是指一个可以通用的函数。在类图中“模板方法”就是templateMethod()。该函数之所以通用是因为它调用了一些动态绑定的函数primitiveMethod1()和primitiveMethod

5、2()。特性分析——意图分析GOF:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。[关键词]操作中的算法:模板方法是针对流程(算法)的一种设计模式。骨架:模板方法提取了流程的步骤序列。步骤延迟:步骤的实现有多个,分别放在不同子类中去实现。某些:可能不是所有的步骤都在子类中实现。[潜台词]1、子类不可以改变算法的结构,即不可以改变模板方法templateMethod(),如果在JAVA中该方法应当加上final,这样在子类中就不可以重写该方法。2、子类

6、必须实现父类的抽象方法,每个抽象方法即是组成算法的一个步骤。3、模板方法适用于步骤序列确定,但部分步骤的实现不确定的情况。特性分析——变与不变变化分级概念上类图上不变的算法的骨架(算法的结构)templateMethod()方法。在基类中已经实现,子类中不能重写该方法,用JAVA实现时该方法前要加final字键字。可能要变的部分步骤一些在基类中已经实现的方法,子类中可以选择重写该方法,通常这种方法前可以加protected关键字。一定会变的部分步骤primitiveMethod1()等基类中的抽象方法。子类必须实现这些抽

7、象方法才能实例化。变化分级抽象分级耦合分级特性分析——数量分析变化分级概念上数量不变的算法的骨架(结构)=1,有且只有一个可能要变的部分步骤>=0,可能有,也可能没有,数量不确定一定会变的部分步骤>=1,至少有一个抽象方法某种类型的方法数量上发生变化后,可能仍然是模板方法。这里有三种类型的方法。模板方法实例一——JUnit测试框架publicclassBaseTestCase(){protectedvoidsetUp(){...;}protectedvoidtearDown(){...;}publicabstractvo

8、idrunTest();publicfinalvoidtemplateMethod(){setUp();runTest();tearDown();}}publicclassSubtitleTestextendsBaseTestCase{publicvoidrunTest(){...;}}该实例有以下特征:1、同时包含

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。