模板模式的基本定義是:定義一個操作中的算法框架,而將一些步驟延遲到子類中,使得子類可用改變一個算法的結構,即可重定義該算法發 某些特定步驟。
示例代碼如下:
1, 在抽象的父類中定義一系列的特定步驟:其中startUp方法定義爲final,使子類不能重寫
package modelpattern;
public abstract class AbstractComputer {
protected void powerOn() {
System.out.println("開啓電源");
}
protected void checkHardWare() {
System.out.println("硬件檢查");
}
protected void loadOS() {
System.out.println("載入操作系統");
}
protected void login() {
System.out.println("通過用戶驗證");
}
public final void startUp() {
System.out.println("--------開機 START----------");
powerOn();
checkHardWare();
loadOS();
login();
System.out.println("--------關機 END----------");
}
}
2 定義實現的實體類:在子類中,可用重寫特定步驟
package modelpattern;
public class CoderComputer extends AbstractComputer{
@Override
protected void login() {
System.out.println("程序員用賬號和密碼登錄");
}
}
以及:
package modelpattern;
public class MilitaryComputer extends AbstractComputer{
@Override
protected void checkHardWare() {
super.checkHardWare();
System.out.println("檢查硬件防火牆");
}
@Override
protected void login() {
System.out.println("進行指紋識別用戶驗證");
}
}
3, 在測試類中運行結果:
package modelpattern;
public class Test {
public static void main(String[] args) {
AbstractComputer computer = new CoderComputer();
computer.startUp();
computer = new MilitaryComputer();
computer.startUp();
}
}
4 查看輸出的結果:
--------開機 START----------
開啓電源
硬件檢查
載入操作系統
程序員用賬號和密碼登錄
--------關機 END----------
--------開機 START----------
開啓電源
硬件檢查
檢查硬件防火牆
載入操作系統
進行指紋識別用戶驗證
--------關機 END----------