激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP設計模式之模板方法模式實例淺析

PHP設計模式之模板方法模式實例淺析

2019-07-15 10:14天涯海角路 PHP教程

這篇文章主要介紹了PHP設計模式之模板方法模式,結合實例形式簡單分析了php設計模式中模板方法模式的概念、原理、定義、使用方法及相關操作注意事項,需要的朋友可以參考下

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

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

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

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

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

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

模板方法模式的優點

  • 封裝不變部分,擴展可變部分。
  • 提取公共部分代碼,便于維護。
  • 行為由父類控制,子類實現

示例:

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

運行結果:

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人免费网站在线观看 | 精品国产一区二区三 | 久久精品首页 | 精品国产乱码久久久久久丨区2区 | 久章草在线视频 | 干色视频| 激情福利视频 | 91久久精品一 | 免费毛片儿 | 91成人午夜性a一级毛片 | 色网免费观看 | 久久久久久久久成人 | 欧美人成在线 | 色视频在线| 久久毛片| 国产精品一区网站 | 国产成年人网站 | 色日本视频 | 色婷婷a v | 欧美精品38videos性欧美 | 日本在线播放一区 | 宅男噜噜噜66国产在线观看 | 亚洲人成在线播放网站 | 国产精品视频一区二区噜噜 | 一级大片一级一大片 | 91看大片| 久久蜜臀一区二区三区av | 欧美专区视频 | 中文字幕一区二区三区久久 | 成人在线观看一区二区三区 | 国产一区二区在线免费观看 | 一级毛片播放 | 全黄裸片武则天一级第4季 偿还电影免费看 | 精品国产久 | 白天操夜夜操 | 精品在线视频播放 | 九九视屏| 一级电影免费在线观看 | 国产品久久 | 一本一道久久久a久久久精品91 | 国产黄色毛片 |