模板方法模式定义
模板方法(Template Method)模式定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。
模板方法模式使用场景
- 多个子类有公有的方法,并且逻辑基本相同时。
- 重要、复杂的算法,可以把核心算法设计为模板方法,相关细节功能有子类去实现。
- 重构时,模板方法是一个经常使用的模式,把相同代码抽取到父类中,然后通过钩子函数约束其行为。
模板方法模式的 UML 类图
public abstract class AbstractClass {
/**
* 一些抽象行为,放到子类去实现
*/
public abstract void primitiveOperation1();
public abstract void primitiveOperation2();
/**
* 模板方法,给出逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们都推迟到子类去实现
*/
public void templateMethod() {
specificMethod();
primitiveOperation1();
primitiveOperation2();
}
/**
*
*/
public void specificMethod() {
System.out.println("抽象类中的具体方法被调用...");
}
}
/**
* 具体子类
*/
public class ConcreteClass extends AbstractClass{
@Override
public void primitiveOperation1() {
System.out.println("抽象方法1的实现被调用...");
}
@Override
public void primitiveOperation2() {
System.out.println("抽象方法2的实现被调用...");
}
}
/**
* 客户类
*/
public class Client {
public static void main(String[] args) {
AbstractClass abstractClass = new ConcreteClass();
abstractClass.templateMethod();
}
}
程序的运行结果如下:
抽象类中的具体方法被调用...
抽象方法1的实现被调用...
抽象方法2的实现被调用...
网友评论