【設計模式學習筆記】模板模式
阿新 • • 發佈:2018-12-31
模板模式,定義一個模型,模型中的具體細節我們自己去設計。這和我們之後會提到的建造者模式有點相似。
文章目錄
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