面向对象编程
模板方法设计模式 TemplateMethod
1 模板方法
模板方法本质上是一个方法,该方法的功能的实现具有确定的框架。
可以理解为该方法的功能的实现对应于一系列确定的步骤,每步的代码实现有的是确定不变的,有的是易变的,即实现这个步骤的代码都符合这个步骤的角色(或者说代表的含义,或者说代表的子功能),但随不同具体内容而不同。
模板方法可以理解为“完形填空”方法,提供了一个带空的实现某种功能的整体。
2 模板方法设计模式
设计模板方法的关键就是实现易变部分随不同具体内容而不同。
换句话说,模板方法的具体实现代码随不同对象的调用而不同。
模板方法设计模式的具体内容为:
- 模板方法实现的确定部分直接按照确定内容完成;
- 模板方法实现的易变部分抽象为一个代表该部分对应角色的抽象方法,具体内容供不同子类实现,这样就实现了易变部分随不同具体内容而不同。
模板方法包含抽象方法,因此存在于抽象类中。
不同重写了抽象方法的子类对象调用父类中的模板方法,实现调用根据自身重写内容而确定的模板方法。
注意,包含抽象方法的方法往往都不是抽象方法,因为其包含抽象方法意味着该方法需要重写的部分已经作为了一个抽象方法。如果包含抽象方法的方法仍是一个抽象方法,相当于既要重写该方法中包含的抽象方法,还要重写该方法,没必要,因为这样可以完全不用包含抽象方法,自己直接作为一个抽象方法更好。