模板方法模式,Template Method,就是在父类中定义一个方法A,这个方法里调用了多个其他方法,这些其他方法留给具体子类来实现,然后具体子类只需要调用父类的方法A,就能改变部分实现,这种模板方法模式也叫钩子函数,回调函数。
1、定义抽象类,其中create为模板方法,不能被重写
public abstract class Template {
public abstract void createWindow();
public abstract void createDoor();
public abstract void ground();
public final void create() {
createWindow();
createDoor();
ground();
}
}
2、实现类,实现父类中定义的抽象方法
public class WoodenHouse extends Template {
public void flower() {
System.out.println("add some flower");
}
@Override
public void createWindow() {
flower();
System.out.println("create window");
}
@Override
public void createDoor() {
System.out.println("create wood door");
}
@Override
public void ground() {
System.out.println("create wood ground");
}
}
public class ConcreteHouse extends Template {
@Override
public void createWindow() {
System.out.println("create window");
}
@Override
public void createDoor() {
System.out.println("create stone door");
}
@Override
public void ground() {
System.out.println("create stone ground");
}
}
3、测试
public class Test {
public static void main(String[] args) {
Template wood = new WoodenHouse();
wood.create();
Template concrete = new ConcreteHouse();
concrete.create();
}
}