php 23種設計模型 模板方法模式

2022-07-14 10:15:09 字數 1184 閱讀 9254

模板模式準備乙個抽象類,將部分邏輯以具體方法以及具體構造形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。先制定乙個頂級邏輯框架,而將邏輯的細節留給具體的子類去實現。

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

主要解決:一些方法通用,卻在每乙個子類都重新寫了這一方法。

何時使用:有一些通用的方法。

如何解決:將這些通用演算法抽象出來。

關鍵**:在抽象類實現,其他步驟在子類實現。

應用例項:1、在造房子的時候,地基、走線、水管都一樣,只有在建築的後期才有加壁櫥加柵欄等差異。 2、西遊記裡面菩薩定好的 81 難,這就是乙個頂層的邏輯骨架。 3、spring 中對 hibernate 的支援,將一些已經定好的方法封裝起來,比如開啟事務、獲取 session、關閉 session 等,程式設計師不重複寫那些已經規範好的**,直接丟乙個實體就可以儲存。

優點:1、封裝不變部分,擴充套件可變部分。 2、提取公共**,便於維護。 3、行為由父類控制,子類實現。

缺點:每乙個不同的實現都需要乙個子類來實現,導致類的個數增加,使得系統更加龐大。

使用場景:1、有多個子類共有的方法,且邏輯相同。 2、重要的、複雜的方法,可以考慮作為模板方法。

abstract class abstractclass 

abstract protected function primitiveoperation1(); // 基本方法

abstract protected function primitiveoperation2();

}class concreteclass extends abstractclass

protected function primitiveoperation2()

}$class = new concreteclass();

$class->templatemethod();

23種模式總覽 : 

PHP 23種設計模式

學習php,對設計模式永遠是逃不掉的 今天把php23種設計模式及其demo好好整理如下 記錄php關於23種設計模式的簡單demo。設計模式分為 建立型模式,結構型模式,行為型模式等23種設計模式。一 五種建立型模式如下 工廠方法模式factory method 抽象工廠模式abstract fa...

PHP 23種設計模式

學習php,對設計模式永遠是逃不掉的 今天把php23種設計模式及其demo好好整理如下 記錄php關於23種設計模式的簡單demo。設計模式分為 建立型模式,結構型模式,行為型模式等23種設計模式。一 五種建立型模式如下 工廠方法模式factory method 抽象工廠模式abstract fa...

23種設計模式 模板方法模式

參考文件 通常叫模板方法模式定義乙個演算法的骨架,並允許子類為乙個或者多個步驟提供實現。能夠使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。屬於行為性設計模式 一次性實現乙個演算法的不變的部分,並將可變的部分交給子類來實現 各子類中公共的行為被提取出來並集中到乙個公共的父類當中,從...