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

《Head.First设计形式》的学习笔记(11)--模板方法模式

2012-09-12 
《Head.First设计模式》的学习笔记(11)--模板方法模式意图:在一个方法中定义一个算法的骨架,而将一些步骤延

《Head.First设计模式》的学习笔记(11)--模板方法模式

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

结构:


《Head.First设计形式》的学习笔记(11)--模板方法模式
?

其中AbstractClass 实现为:

?

public abstract class CaffeineBeverage {  final void prepareRecipe() {boilWater();brew();pourInCup();addCondiments();} abstract void brew();  abstract void addCondiments(); void boilWater() {System.out.println("Boiling water");}  void pourInCup() {System.out.println("Pouring into cup");}}

?brew()方法和addCondiments()方法由子类方法延迟实现。

?

?? 上面有一个hook()方法,我们到底何时使用钩子这个方法呢?就是一些步骤进行可以选择的时候。

?

?? 下面我们将介绍模板方法和策略模式的一些不同点:

1.模板方法使用的继承模式,策略模式使用的是对象组合模式。

2.模板方法依赖度比策略高。

总结:

1.为防止子类修改模板方法的算法,可以将模板方法声明为final.

2.其中模板方法模式运用了好莱坞原则。

3.策略模式和模板方法模式都封装了算法,但是模板方法模式使用继承,而策略模式使用对象组合模式。

4.其实工厂方法是一种特殊的模板方法的版本。

热点排行