模板方法模式由两个角色组成:父类角色,子类角色。
父类角色:提供模板。
子类角色:为父类模板提供实现。
类图:
JAVA代码:
AbstractClass.java
package com.templatemethod; public abstract class AbstractClass { /** * 定义了算法的骨架,即步骤 */ public void template() { this.method1(); this.method2(); this.method3(); } /** * 子类可以重写这些方法 */ public abstract void method1(); public abstract void method2(); public abstract void method3(); }
ConcreteClass.java
package com.templatemethod; public class ConcreteClass extends AbstractClass { @Override public void method1() { System.out.println("Step 1"); } @Override public void method2() { System.out.println("Step 2"); } @Override public void method3() { System.out.println("Step 3"); } }
Test.java
package com.templatemethod; public class Test { public static void main(String[] args) { AbstractClass ac = new ConcreteClass(); ac.template(); } }
总结:模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中去实现,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而每个步骤的实现可以在子类中完成。