模板方法設計模式定義了一個抽象基類,該基類中定義了一套算法流程,其中部分流程定義為抽象方法殴俱,由具體的子類去實現。主要包含2個角色:
- 抽象基類:定義算法流程枚抵。
- 具體實現子類:實現基類中的若干抽象方法线欲。
示例
// 抽象基類,定義了一組算法流程
public abstract class Person {
// 一天做的事情
public void takeOneDay() {
getUp();
takeMorning();
takeafternoon();
takeEvening();
}
protected void getUp() {
System.out.println("起床了, 新的一天開始了");
}
// 上午做的事情
public abstract void takeMorning();
// 下午做的事情
public abstract void takeafternoon();
// 晚上做的事情
public abstract void takeEvening();
}
public class Student extends Person {
@Override
public void takeMorning() {
System.out.println("學生上午去學校學習");
}
@Override
public void takeafternoon() {
System.out.println("學生下午去學校學習");
}
@Override
public void takeEvening() {
System.out.println("學生晚上回家做作業(yè)");
}
}
public class Programmer extends Person {
@Override
public void takeMorning() {
System.out.println("程序員上午去公司寫代碼");
}
@Override
public void takeafternoon() {
System.out.println("程序員下午在公司測試代碼");
}
@Override
public void takeEvening() {
System.out.println("程序員晚上在公司加班修改bug");
}
}
public class Client {
public static void main(String[] args) {
Person student = new Student();
student.takeOneDay();
System.out.println();
Person programmer = new Programmer();
programmer.takeOneDay();
}
}
運行結果如下:
抽象模板設計模式.png