定义和简单实例

模板方法使子类可以在不改变一个算法结构的情况下,重新定义算法中某些特定步骤的实现。下面是简单示例:

public abstract class AbstractClass {     public final void templateMethod() {         primitiveOperation1();         primitiveOperation2();     }     public abstract void primitiveOperation1();     public abstract void primitiveOperation2(); } public class ConcreteClass extends AbstractClass {     public void primitiveOperation1() {         System.out.println("Concrete implementation of operation1");     }     public void primitiveOperation2() {         System.out.println("Concrete implementation of operation2");     } }

实现步骤的详细解析

模板方法包含以下几个步骤:

1、建立抽象基类,定义模板方法。模板方法定义了算法的步骤,并按照顺序来执行。模板方法通常被声明为final,以防止子类改变模板方法中的算法框架。

public abstract class AbstractClass {     // The "template method"     public final void templateMethod() {         primitiveOperation1();         primitiveOperation2();     }     ... }

2、模板方法调用抽象操作以及其他方法。除了抽象操作,模板方法还可以调用(钩子)其他方法。如果子类不能提供钩子方法的实现,它的默认行为就是什么也不做。

public abstract class AbstractClass {     ...     // A "hook" method     protected void hookMethod() {         // Empty by default     } }

3、在子类中实现抽象操作。子类为抽象操作提供具体实现,这样每个子类定义了如何执行算法的一部分。

public class ConcreteClass extends AbstractClass {     public void primitiveOperation1() {         ...     }     public void primitiveOperation2() {         ...     } }