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

2022-06-05 12:54:07 字數 2468 閱讀 8645

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

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實現類都繼承它。在公共類中,通過模板方法來進行實現類的一些初始化工作,這些工作由父類統一呼叫,實現類只需要實現每乙個步驟的具體內容就可以了。

快取類圖

完整原始碼:

<?php 

abstract 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();

說明

b站id:48278053

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

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

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

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

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

父類抽象出子類共有的方法,子類實現各自不同的業務。總之就是一種行為有他們共同的方法,只是他們具體的實現不一樣。比如開車這種行為模式,啟動 換擋 踩油門。每種型號品牌的車都有共同的行為,但是不同型號品牌的車的實現方式可能不同,需要每個品牌型號的車自己實現這些功能。這樣的定義上面行為的模式,稱之為模板方...