程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP設計模式——模板模式

PHP設計模式——模板模式

編輯:關於PHP編程

PHP設計模式——模板模式


 

 

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

 

UML類圖:

\

 

角色:

抽象模板角色(MakePhone):抽象模板類,定義了一個具體的算法流程和一些留給子類必須實現的抽象方法。

具體子類角色(XiaoMi):實現MakePhone中的抽象方法,子類可以有自己獨特的實現形式,但是執行流程受MakePhone控制。

核心代碼:

 


 * User  extends  Jang
 * Date  extends  2015/6/10
 * Time  extends  11  extends 06
 */

//抽象模板類
abstract class MakePhone
{
    protected $name;

    public function __construct($name)
    {
        $this->name=$name;
    }

    public function MakeFlow()
    {
        $this->MakeBattery();
        $this->MakeCamera();
        $this->MakeScreen();
        echo $this->name.手機生產完畢!

; } public abstract function MakeScreen(); public abstract function MakeBattery(); public abstract function MakeCamera(); } //小米手機 class XiaoMi extends MakePhone { public function __construct($name='小米') { parent::__construct($name); } public function MakeBattery() { echo 小米電池生產完畢!
; } public function MakeCamera() { echo 小米相機生產完畢!
; } public function MakeScreen() { echo 小米屏幕生產完畢!
; } } //魅族手機 class FlyMe extends MakePhone { function __construct($name='魅族') { parent::__construct($name); } public function MakeBattery() { echo 魅族電池生產完畢!
; } public function MakeCamera() { echo 魅族相機生產完畢!
; } public function MakeScreen() { echo 魅族屏幕生產完畢!
; } }
調用客戶端測試代碼:

 

 

header(Content-Type:text/html;charset=utf-8);
//-------------------------模板模式---------------------
require_once ./Template/Template.php;
$miui=new XiaoMi();
$flyMe=new FlyMe();

$miui->MakeFlow();
$flyMe->MakeFlow();

 

 

適用場景及優勢:

1、完成某一細節層次一致的一個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時。我們通常考慮用模板模式來處理。

2、當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重復出現,我們通過模板模式把這些行為搬移到單一的地方,這樣就幫助子類擺脫重復的不變行為的糾纏。

3、模板模式通過把不變的行為搬移到超級抽象類,去除子類中的重復代碼來體現它的優勢。模板模式提供了一個很好的代碼復用平台。

 

歡迎關注我的視頻課程,地址如下,謝謝。

 

PHP面向對象設計模式

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved