大话设计模式读书笔记-10模板方法模式
2020-03-23 本文已影响0人
QuietHeart
第10章 考题抄错会做也白搭——模板方法模式
定义
用抽象类定义操作算法骨架,将公共的部分提取;具体的实现与差异部分放到子类实现。
实现
- Abstract Class,抽象类/模板,定义了方法的顶级逻辑框架,比如包含具有哪些步骤。
- Concrete Class,具体类,用不同的方式对模板逻辑框架中的步骤进行具体实现。
类图:

抽象类实现:

客户端使用:

例如:考试答卷子,整个过程(answer2(),answer2()…), 就是一个模板方法,而不同的人,对answerx()的实现不同。
总结
模板方法作用是将不变的东西搬挪到父亲类实现,减少各个子类的重复代码。
既然选择了继承,继承的时候就要让父类成为子类的模板,所有重复的代码都要上升到父类中去,而不是让每个子类都重复。