模板方法,实际上就是所谓的钩子函数。就是有一个工序,这个工序里面会有多个操作按顺序进行,这样就可以定一个抽象类,将工序作为模板方法,将具体的操作放到模板方法中。具体实现抽象类的类,可以重新操作方法,调用模板方法,就可以按重新的操作方法进行执行。
public class MainTemplateMethod {
public static void main(String[] args) {
Parent p = new Parent();
p.eat();
Child c = new Child();
c.eat();
}
}
abstract class Person{
public void eat(){
pickStick();
openMouth();
sendFood();
}
abstract void pickStick();
abstract void openMouth();
abstract void sendFood();
}
class Parent extends Person{
@Override
void openMouth() {
System.out.println("爸爸张开嘴");
}
@Override
void pickStick() {
System.out.println("爸爸拿起筷子");
}
@Override
void sendFood() {
System.out.println("爸爸输送食物");
}
}
class Child extends Person{
@Override
void openMouth() {
System.out.println("孩子张开嘴");
}
@Override
void pickStick() {
System.out.println("孩子拿起筷子");
}
@Override
void sendFood() {
System.out.println("孩子输送食物");
}
}