一.简介
系统开发过程中可能知道了算法所需的执行步骤,但具体实现细节需要实现类中才能确定。可采用模板方法模式解决这类问题。
模板方法(Template Method)模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤
模板方法模式结构:
1.抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。
模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。
基本方法:是整个算法中的一个步骤,包含以下几种类型。
抽象方法:在抽象类中申明,由具体子类实现。
具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。
钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。
2.具体子类(Concrete Class):实现抽象类中所定义的抽象方法和钩子方法
二.实现
package com.vincent;
import java.util.HashMap;
import java.util.Map;
abstract class AbstractClass{
public final void templateMethod(){
method1();
method2();
}
public abstract void method1();
public abstract void method2();
}
class ConcreteClass extends AbstractClass{
@Override
public void method1() {
}
@Override
public void method2() {
}
}
三.总结
1.模板方法模式中方法有抽象方法、具体方法和钩子方法,使用“钩子方法”可以使得子类控制父类的行为。