模板方法
定义:定义一个过程中的算法骨架,而将算法的一些步骤延迟到子类中。
这么做是为了将不变的部分封装到父类中实现,而将可变部分的算法由子类继承实现,便于扩展。
模板结构:
- 抽象模板
- 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。
- 基本方法:
- 抽象方法:在抽象类中声明,由具体子类实现。
- 具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。
- 钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。
- 具体子类
具体实现类,实现抽象类中定义的抽象方法和钩子方法。
代码示例:
public abstract class AbstractClass {
public void templateMethod(){
specificMethd();
abstractMethod1();
abstractMethod2();
}
void specificMethd(){
System.out.println("抽象类实现的方法");
}
abstract void abstractMethod1();
abstract void abstractMethod2();
}
public class ConcreteClass extends AbstractClass {
@Override
void abstractMethod1() {
System.out.println("子类实现的方法1");
}
@Override
void abstractMethod2() {
System.out.println("子类实现的方法2");
}
}
测试代码:
public static void main(String[] args) throws InterruptedException, CloneNotSupportedException {
AbstractClass abstractClass=new ConcreteClass();
abstractClass.templateMethod();
}