设计模式-模板方法模式
来源:互联网 发布:火鸟中文移动编程 编辑:程序博客网 时间:2024/05/16 05:41
一、模板方法模式
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
二、UML类图
三、钩子
钩子是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在可以让子类有能力对算法的不同点进行挂钩。要不要挂钩,由子类自行决定。
四、好莱坞原则
别调用(打电话给)我们,我们会调用(打电话给)你。
好莱坞原则可以给我们一种防止“依赖腐败”的方法。当高层组件依赖低层组件,而低层组件又依赖高层组件,而高层组件又依赖边侧组件,而边侧组件又依赖低层组件时,依赖腐败就发生了。在这种情况下,没有人可以轻易地搞懂系统是如何设计的。
好莱坞原则之下,我们允许低层组件将自己挂钩到系统上,但是高层组件会决定什么时候和怎样使用这些低层组件。换句话说,高层组件对低层组件的方式是“别调用我们,我们会调用你”。
好莱坞原则和模板方法之间的连接其实还算明显:当我们设计模板方法模式时,我们告诉子类,“不要调用我们,我们会调用你”。
eg:
五、相似方法回顾与对比
模板方法:子类决定如何实现算法中的某些步骤。
策略:封装可互换的行为,然后使用委托来决定要采用哪一个行为。
工厂方法:由子类决定实例化哪个具体类。
六、要点
1、“模板方法”定义了算法的步骤,把这些步骤的实现延迟到子类。
2、模板方法模式为我们提供了一种代码复用的重要技巧。
3、模板方法的抽象类可以定义具体方法、抽象方法和钩子。
4、抽象方法由子类实现。
5、钩子是一种方法,它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要覆盖它。
6、为了防止子类改变模板方法中的算法,可以将模板方法声明为final。
7、好莱坞原则告诉我们,将决策权放在高层模块中,以便决定如何以及何时调用低层模块。
8、你将在真实世界代码中看到模板方法模式的许多变体,不要期待它们全都是一眼就可以被你认出的。
9、策略模式和模板方法模式都封装算法,一个用组合,一个用继承。
10、工厂方法是模板方法的一种特殊版本。
- 设计模式:模板方法模式
- 设计模式 - 模板方法模式
- 设计模式:模板方法模式
- 设计模式 模板方法模式
- 设计模式--模板方法模式
- 设计模式-【模板方法模式】
- 设计模式: 模板方法模式
- 设计模式- 模板方法模式
- 设计模式 - 模板方法模式
- 设计模式 - 模板方法模式
- 设计模式-模板方法模式
- 设计模式-模板方法模式
- 设计模式---模板方法模式
- 设计模式-模板方法模式
- 设计模式--模板方法模式
- 设计模式-模板方法模式
- 设计模式------模板方法模式
- 设计模式----模板方法模式
- 2.JVM运行时数据区域
- 剑指offer
- TP5中文名上传乱码,解决办法
- html评论中星星点亮的效果jquery代码
- C++STL系列 结构体运算符重载及优先队列的使用
- 设计模式-模板方法模式
- Shell脚本编程-分支与循环
- same-tree
- Apache Camel
- 75
- Win10:电脑共享WIFI
- NGUI 3.5教程(二)Label 标签 (Hello world)、多行文本
- 在Ubuntu(Linux)系统中安装一些软件以及工具
- SNMP开发过程中的一些积累