一、意图
在模板类中定义算法骨架,而将一些具体步骤延迟到子类中。
二、图解
如上图,Application模板类在OpenDocument定义了打开一个文档的基本步骤:检测文档是否能被打开CanOpenDocument—-创建文档DoCreateDocument—-读取文档DoRead。对于读取任何格式的文档,这种基本的逻辑步骤都是一样的,但是我们看到CanOpenDocument,DoCreateDocument在模板类中都是抽象方法,而真正的实现方法都交给了子类。这样子类可以实现对应不同的变化。模板类提取了类库中的公共行为,反向的控制结构,类似一个父类调用一个子类的操作。