設計模式(四)模板方法模式

2021-09-16 18:24:25 字數 1551 閱讀 5977

先來想想第乙個問題,為什麼叫模板方法呢?

答:模板模板,肯定就是有一套固定的模式,說白了就是套路,一樣的套路,似曾相識的感覺。

同樣,如果我們在開發中,同樣的套路出現n多次,必然導致專案難以維護,就需要對設計產生嚴重懷疑,架構師要不明確說明為什麼相同的邏輯要出現兩次或更多次,要不然,嘿嘿,有你好看的!因為大量的重複性**會遍布整個專案之中,所以,為了將這個套路提取出來,這時候我們就可以使用模板方法,將套路提取出乙份即可。

template method pattern(模板方法模式):定義乙個操作中的演算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

話不多說,直接看看類圖先:

其中的templatemethod()方法即為模板方法。可以有乙個或幾個,一般都是乙個具體方法,也就是乙個框架,實現對基本方法的排程,完成固定的邏輯。

注意:為了防止惡意的操作,一般模板方法都加上final關鍵字,不允許被重寫。

現在,我們要造出型號不同的寶馬,x4和x6:

package designpattern.templatemethodpattern;

/** * @date 2019/4/4 11:11

*/public abstract class abstractclass

}

public class bmw_x4 extends abstractclass

//寶馬x4引擎嗡嗡響

@override

protected void engineboom()

@override

protected void start()

}

public class bmw_x6 extends abstractclass 

//寶馬x6引擎轟轟響

注意:抽象模板中的基本方法盡量設計為

protected

型別,符合迪公尺特法則,不需要暴露的屬性或方法盡量不要設定為protected型別。實現類若非必要,盡量不要擴大父類中的訪問許可權。

一般來說,抽象類負責宣告最抽象、最一般的事物屬性和方法,實現類完成具體的事物屬性和方法。但是模板方法模式卻顛倒了,抽象類定義了部分抽象方法,由子類實現,子類執行的結果影響了父類的結果,也就是子類對父類產生了影響。

設計模式之四 模板方法模式

設計模式之四 模板方法模式 出處 泰斗社群 專注網際網路遊戲和應用的開發者平台 模板方法模式 template method pattern 定義 define the skeleton of an algorithm in an operation,deferring some steps to ...

模板設計模式 設計模式 模板方法模式

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...

設計模式 模板方法設計模式

物件導向,萬物皆物件,用乙個雷來反應現實生活中的東西。比如銀行系統,業務公升級 活期 定期,差別很小,就加判斷 違背單一職責 差別比較多,尤其是模擬較複雜,型別拆分下。拆分之後,自然就有父類,重用。利率 每個客戶端都有利率,但是各不一樣 抽象方法。show 不分客戶端是一樣的,個別客戶端是不一樣的 ...