定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
- AbstractClass : 抽象类,定义了一套算法框架。
- ConcreteClass : 具体实现类。
- ConcreteClass2: 具体实现类2;
如上图所示,AbstractClass是抽象类,其中定义并实现了一个模板方法-templateMethod,这个具体方法给出了一个逻辑的骨架,而逻辑的具体实现步骤在相应的抽象操作总如:operation_2、operation_3,最终被推迟到子类中被实现。
模板方式通过把不变的行为移动到超类,去除子类中的重复代码来体现它的优势。