声明: 本文
内容属于《Head First 设计模式》阅读笔记
,文中涉及到的知识案例等直接或间接来源于该书。《Head First 设计模式》
通过有趣的图表+文字的形式,让人自然学习设计模式,非常棒
,推荐阅读
。
模板方法模式概念:
在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
案例(辅助理解):
情景说明:
现在有咖啡和茶这两种饮料。其中准备咖啡的步骤是①把水煮沸、②用沸水冲泡咖啡、③把咖啡倒进杯子、④加糖和牛奶;准备茶的步骤是①把水煮沸、②用沸水浸泡茶叶、③把咖啡茶倒进杯子、④加柠檬。
不使用模板方法的实现:
- 咖啡类:
- 茶类:
使用模板方法的实现:
说明: 从情景说明中可以发现,不管是茶叶还是咖啡,它们的第①步、第③步几乎是一模一样的,可以抽取出来,放在父类中;第①步、第③步不同,那么可以将这两步交给具体的子类去实现。
-
模板方法所在的抽象父类:
-
咖啡子类:
-
茶子类:
-
测试一下:
-
测试代码:
-
运行main方法,控制台输出:
-
模板方法的简单拓展(基于上面的案例):
模板方法模式使用非常广,尤其是在架构走向方面。模板方法模式的变形也很多,有的容易被认出来,有的就需要对代码认知敏锐的开人人员才能快速认出来,所以很多时候我们在不知不觉间就使用了模板方法模式。下面基于上面的案例,简单拓展一下上面的模板方法
:
模板方法模式学习完毕 !
^_^ 如有不当之处,欢迎指正
^_^ 参考资料
《Head First 设计模式》Eric Freeman & Elisabeth Freeman with Kathy Sierra & Bert Bates著,O’Reilly Taiwan公司译,UMLChina改编
^_^ 测试代码托管链接
https://github.com/JustryDeng…DesignPattern
^_^ 本文已经被收录进《程序员成长笔记》 ,笔者JustryDeng