算法模式
28 Aug 2017
模板算法模式:
在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的基础上,重新定义算法中的某些步骤
类图:
一个简单的例子:
冲泡一杯咖啡和冲泡一杯茶的步骤很相似
- 烧水
- 冲泡
- 倒入杯子
- 加入调料
因此可以将准备的过程在封装在基类中,具体的实现方法,可以由子类实现。
咖啡因类饮料
咖啡
茶
钩子是一种方法
它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要覆盖他,通过钩子子类可以对算法的某些流程进行干预
好莱坞原则
决策权放在高层模块中,以便决定如何以及何时调底层模块
与策略模式的区别
策略模式和模板方法模式都封装算法,一个用组合,一个用继承。策略模式用委托的方式实现。
与工厂模式
工厂模式是模板方法模式的特殊版本