1. 程式人生 > >【設計模式學習筆記】模板模式

【設計模式學習筆記】模板模式

模板模式,定義一個模型,模型中的具體細節我們自己去設計。這和我們之後會提到的建造者模式有點相似。

文章目錄

1.1 先來個模板

package template;

/************************************************
 *@ClassName : CarTemplate
 *@Description : TODO
 *@Author : NikolaZhang
 *@Date : 【2018/12/3 20:38】
 *@Version : 1.0.0
 *************************************************/
public abstract class CarTemplate { protected abstract void door(); protected abstract void wheel(); protected abstract void light(); protected abstract void aiCtrl(); public final void run() { door(); wheel(); light(); if(isAiCtrl()) { aiCtrl
(); } } protected boolean isAiCtrl(){ System.out.println("父類中設定開啟AI"); return true; } }

1.2 根據模型設計個車

package template;

/************************************************
 *@ClassName : BWMCar
 *@Description : TODO
 *@Author : NikolaZhang
 *@Date : 【2018/12/3 20:45】
 *@Version : 1.0.0
 *************************************************/
public class BWMCar extends CarTemplate { private boolean aiCtrl = false; @Override protected void door() { System.out.println("給車加個門"); } @Override protected void wheel() { System.out.println("給車加個輪"); } @Override protected void light() { System.out.println("給車加個燈"); } @Override protected void aiCtrl() { System.out.println("給車加個AI"); } public boolean isAiCtrl() { System.out.println("開啟AI"+this.aiCtrl); return this.aiCtrl; } public void setAiCtrl(boolean aiCtrl) { this.aiCtrl = aiCtrl; } }

1.3 測試

package template;

/************************************************
 *@ClassName : Test
 *@Description : TODO
 *@Author : NikolaZhang
 *@Date : 【2018/12/3 21:04】
 *@Version : 1.0.0
 *************************************************/

public class Test {
    public static void main(String[] args) {
        BWMCar bwmCar = new BWMCar();
        bwmCar.setAiCtrl(true);
        bwmCar.run();
    }
}

1.4 結果

在這裡插入圖片描述

參考

【菜鳥教程】:http://www.runoob.com/design-pattern/template-pattern.html