設計模式之模板方法模式學習

參考地址:https://blog.csdn.net/u013393958/article/details/80231327

總結:

模板方法模式的實現要素:

1 抽象基類

(1)基本方法

例如:/*基本方法,將水煮沸*/

private void boilWater(){

  System.out.println("將誰煮沸");

}

/*基本方法,將飲料倒入杯中*/

private void pourInCup(){

    System.out.println("將飲料倒入杯中");

}

(2)抽象方法

例如:

/*抽象的基本方法,泡製飲料*/

protected abstract void brew();

(3)可選的鉤子

例如:/*

*Hook,鉤子函數,提供一個默認或空的實現,具體的子類可以自行決定是否掛鉤以及如何掛鉤

*詢問用戶是否加入調料

*/

protected boolean isCustomerWantsCondiments(){

      return true;

}

(4)Template方法(final)

/*

*製備飲料的模板方法

*封裝了所有子類共同遵循的算法框架

*/

public final void prepareBeverageTemplate(){

  //步驟1將水煮沸

boilWater();

//步驟2 泡製飲料

brew();

//步驟3 將飲料倒入杯中

pourInCup();

if(isCustomerWantsCondiments()){

    //步驟4 加入調味料

    addCondiments();

}

}

2 具體子類。

(1)實現基類中的抽象方法

(2)覆蓋鉤子方法

模板方法模式的實現要素

準備一個抽象類,將部分邏輯以具體方法的形式實現,然後聲明一些抽象方法交由子類實現剩餘邏輯,用鉤子方法給予子類更大的靈活性。最後將方法彙總構成一個不可改變的模板方法。

模板方法模式的適用場景

(1)算法或操作遵循相似的邏輯。

例如:

(2)重構時(把相同的代碼抽取到父類中)

(3)重要、複雜的算法那,核心算法設計爲模板算法

模板方法模式的優點

(1)封裝性好

(2)複用性好

(3)屏蔽細節

(4)便於維護

模板方法模式的缺點

繼承方面的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章