首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式学习十一:模板方法模式

2012-08-10 
设计模式学习十一:模板方法模式一.概念???? 模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延

设计模式学习十一:模板方法模式

一.概念

???? 模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

?

二.UML

?

设计方式学习十一:模板方法模式

    AbstractClass(定义了算法的骨架)。ConcreteClass(定义了算法估计中具体算法的实现)。

三.实例分析

???? 做菜,对我来说是相当的简单。我做菜,都是一个流程:洗菜-放油-放菜-放盐-小炸一下-小煮一下-...。做鱼和做肉,除了最后鱼肉的差别外,其它的辣椒颜色,味道什么的,毫无差别。就拿这个例子来说明今天的模式。

设计方式学习十一:模板方法模式

?

???? Cook

package com.zzy.templateMethod;/** * 测试类 * @author eason * */public class TestTemplateMethod {public static void main(String[] args) {Cook fish = new CookFish();fish.cook();Cook egg = new CookEgg();egg.cook();}}

?

四.使用场景及使用感受

    ?模板定义了一系列算法的步骤,这一系列算法中肯定有一个抽象的算法,也就是模板方法是一个工作的概要,至于一套完完整整的工作,是需要子类来参与的。如果对这一系列的算法,有些子类不需要其中的某一个或者某一些算法,可以用"挂钩"来实现,钩子说明了算法的可选性。模板类里面定义这些算法的默认实现或者空实现,子类有需要的话就重写这些算法。如上述中的tasteDelicious方法和doOtherThings方法。?当不变的和可变的方法在子类实现中混在一起的时候,不变的行为就会在子类中重复出现。通过模板方法模式把这些不变的行为搬到单一的地方,可以帮助子类摆脱重复的不变行为的纠缠。???

热点排行