国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品不卡 | www.99re| 四虎影视永久免费观看 | 日本久久国产 | 亚洲精品一区二区 | 国产精品99久久免费观看 | 91精品国产91久久久久久 | 日韩精品1区2区3区 国产日韩在线视频 | 最近最新mv字幕免费观看 | 久久久久久人 | 成人av在线网站 | 中文字幕乱码亚洲精品 | 欧美日韩国产一区二区三区不卡 | 瑟瑟视频网站 | 午夜资源| 亚洲视频久久久 | 天天干天天看天天操 | 91新视频 | 欧美日韩精品一区二区三区 | 精品视频免费观看 | 狠狠躁夜夜躁人人爽天天天天97 | 明里在线观看 | 播放毛片| 精品免费av | 免费的av | 久久成人一区二区 | 爱爱网址 | 日本久久免费 | 午夜精品久久久久久久星辰影院 | 精品久久久久久国产 | 在线播放国产一区二区三区 | 久久久国产一区 | 人人人人澡人人爽人人澡 | 亚洲人成网站999久久久综合 | 91精品国产欧美一区二区 | 国产一区二区精品在线观看 | 亚洲久草 | 国产在线精品一区二区 | 亚洲国产aⅴ成人精品无吗 久久综合久久久 | 青青草免费在线视频 | 久久亚洲欧美日韩精品专区 |