濮阳杆衣贸易有限公司

主頁 > 知識庫 > PHP設(shè)計模式之模板方法模式實例淺析

PHP設(shè)計模式之模板方法模式實例淺析

熱門標(biāo)簽:兼職做地圖標(biāo)注好賺錢嗎 地圖標(biāo)注怎么做商戶驗證 打開百度地圖標(biāo)注 亳州企業(yè)外呼系統(tǒng) 山東電銷卡外呼系統(tǒng)原理是什么 400 電話 辦理 海南外呼系統(tǒng)方案 蘇州外呼系統(tǒng)有效果嗎 智能電銷語音機(jī)器人資訊

本文實例講述了PHP設(shè)計模式之模板方法模式。分享給大家供大家參考,具體如下:

定義一個操作中的算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。

模板方法模式中會用到抽象模板,它的方法分為兩類:

  • 基本方法,也叫做基本操作,是由子類實現(xiàn)的方法,并且在模板方法被調(diào)用。
  • 模板方法,可以有一個或多個,一般是一個具體方法,也就是一個框架,實現(xiàn)基本方法的調(diào)度,完成固定邏輯。

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

注意: 抽象模板中的基本方法盡量設(shè)計為protected類型,符合迪米特法則,不需要暴露的屬性或方法盡量不要設(shè)置為protected類型。實現(xiàn)類若非必要,盡量不要擴(kuò)大父類中的訪問權(quán)限。

模板方法模式的優(yōu)點

  • 封裝不變部分,擴(kuò)展可變部分。
  • 提取公共部分代碼,便于維護(hù)。
  • 行為由父類控制,子類實現(xiàn)

示例:

?php
/**
 * 模型方法模式
 */
abstract class ACar {
  abstract protected function start();
  abstract protected function engineBoom();
  abstract protected function alarm();
  abstract protected function stop();
  public function run() {
    $this->start();
    $this->engineBoom();
    $this->alarm();
    $this->stop();
  }
}
final class Benz extends ACar {
  protected function start() {
    echo 'Benz start' . PHP_EOL;
  }
  protected function engineBoom() {
    echo 'Benz engine boom' . PHP_EOL;
  }
  protected function alarm() {
    echo 'Benz alarm' . PHP_EOL;
  }
  protected function stop() {
    echo 'Benz stop' . PHP_EOL;
  }
}
final class BMW extends ACar {
  protected function start() {
    echo 'BMW start' . PHP_EOL;
  }
  protected function engineBoom() {
    echo 'BMW engine boom' . PHP_EOL;
  }
  protected function alarm() {
    echo 'BMW alarm' . PHP_EOL;
  }
  protected function stop() {
    echo 'BMW stop' . PHP_EOL;
  }
  // 修改順序
  public function run() {
    $this->start();
    $this->alarm();
    $this->engineBoom();
    $this->stop();
  }
}
class Client {
  public static function run() {
    $benz = new Benz();
    $benz->run();
    $bmw = new BMW();
    $bmw->run();
  }
}
Client::run();

運行結(jié)果:

Benz start Benz engine boom Benz alarm Benz stop BMW start BMW alarm BMW engine boom BMW stop

注:部分內(nèi)容摘自《設(shè)計模式之禪

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • php單態(tài)設(shè)計模式(單例模式)實例
  • php設(shè)計模式 Singleton(單例模式)
  • 基于php設(shè)計模式中單例模式的應(yīng)用分析
  • 學(xué)習(xí)php設(shè)計模式 php實現(xiàn)單例模式(singleton)
  • PHP設(shè)計模式之單例模式原理與實現(xiàn)方法分析
  • PHP設(shè)計模式之抽象工廠模式實例分析
  • PHP設(shè)計模式之簡單工廠和工廠模式實例分析
  • PHP設(shè)計模式之工廠模式定義與用法詳解
  • PHP設(shè)計模式之單例模式定義與用法分析

標(biāo)簽:萊蕪 綏化 呼倫貝爾 清遠(yuǎn) 溫州 金華 紹興 安康

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP設(shè)計模式之模板方法模式實例淺析》,本文關(guān)鍵詞  PHP,設(shè)計模式,之,模板,方法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP設(shè)計模式之模板方法模式實例淺析》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP設(shè)計模式之模板方法模式實例淺析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    乌苏市| 大足县| 湘潭市| 灵寿县| 葵青区| 绥宁县| 霍邱县| 通州市| 香格里拉县| 兰州市| 漯河市| 黄浦区| 霍城县| 临武县| 奎屯市| 广元市| 迁西县| 来宾市| 宁夏| 许昌市| 宕昌县| 海伦市| 锦州市| 泗阳县| 准格尔旗| 铅山县| 无为县| 阳信县| 威海市| 澄江县| 从江县| 贵溪市| 洪洞县| 灌南县| 南开区| 阳东县| 长兴县| 济宁市| 黔江区| 广元市| 康平县|