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

2021-10-12 09:10:22 字數 2468 閱讀 7787

模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研、開發、測試、部署上線等流程。而具體到每個專案中,這些流程的實現又不會完全相同。這個流程,就像是模板方法,讓我們每次都按照這個流程進行開發。

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

gof類圖

在這裡插入描述

**實現

abstract class abstractclass    abstract public function primitiveoperation1();    abstract public function primitiveoperation2();}
定義乙個抽象類,有乙個模板方法templatemethod(),這個方法中我們對演算法操作方法進行呼叫。而這些演算法抽象方法是在子類中去實現的。

class concreteclassa extends abstractclass    public function primitiveoperation2()    }class concreteclassb extends abstractclass    public function primitiveoperation2()    }
具體的實現類,它們只需要去實現父類所定義的演算法就可以了。

$c = new concreteclassa();$c->templatemethod();$c = new concreteclassb();$c->templatemethod();
在客戶端的呼叫中,例項化子類,但呼叫的是子類所繼承的父類的模板方法。就可以實現統一的演算法呼叫了。

在公司中,我非常的推崇敏捷式的專案管理,當然,這裡也不是說傳統的專案管理有多麼不好,只是敏捷更適合我們這種短平快的公司。在敏捷中,我們採用的是scurm框架,它其實就是乙個模板。它定義了四種會議、三種人員、三個工具。在每個專案的具體實現中,我們都會遵守這些規則,但具體的實現又不會一樣。比如有時我們是一周乙個迭代,有時是乙個月乙個迭代。有時我們不需要回顧會議,而是將回顧和評審會議放在了一起進行。不管怎麼樣,我們會在scurm的基礎上進行靈活的專案開發。而做為領導的我,只需要在每個專案中調取scurm的基本流程就可以了。所以說,公司的強大和大家的學習是分不開的,好用的東西當然要時刻學習分享並應用啦!!

完整**:

不發簡訊了,這次我們實現的是乙個cache類的初始化部分。就像上文說過的一些框架中的工具類。一般cache我們會使用memcached或者redis來實現,所以我們抽取乙個公共cache類,然後讓memcached和redis的cache實現類都繼承它。在公共類中,通過模板方法來進行實現類的一些初始化工作,這些工作由父類統一呼叫,實現類只需要實現每乙個步驟的具體內容就可以了。

快取類圖

在這裡插入描述

完整原始碼:

<?phpabstract  class cache    public function init()        abstract public function getconfig();    abstract public function openconnection();    abstract public function checkconnection();}class memcachedcache extends cache    public function openconnection()        public function checkconnection()     else     }}class rediscache extends cache    public function openconnection()        public function checkconnection()     else     }}$m = new memcachedcache();$r = new rediscache();
說明

模板方法模式是不是也非常簡單。最主要的是這樣的設計模式跟我們的生活很接近,在我們的工作學習過程會非常容易見到並使用到。這樣的模式簡直不能掛在常用設計模式的標籤下,因為它比常用更常用。好了,我們的進度還不錯喲,下乙個模式正等著我們呢,它可是大名鼎鼎的單例模式。

模板設計模式 設計模式之模板模式

模板模式,通常又叫做模板方法模式,乙個抽象類公開定義了執行方法的模板,它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方法進行,這種型別的設計模式屬於行為型模式。模板模式主要解決將通用的演算法抽象起來,同樣的 邏輯出現了重複,就可以使用模板模式進行重構。關鍵 在抽象類實現,其他步驟在子類實現...

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

以下文字部分均為本人自己的想法與總結所以未必正確 參考定義 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟 優點 1 封裝不變部分,擴充套件可變部分。2 提取公共 便於維護。3 行為由父類控制,子類實現。當我們要完成...

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

模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研 開發 測試 部署上線等流程。而具體到每個專案中,這些流...