最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php設(shè)計(jì)模式之模板模式實(shí)例分析【星際爭(zhēng)霸游戲案例】

 更新時(shí)間:2020年03月24日 11:25:57   作者:DavidHHuan  
這篇文章主要介紹了php設(shè)計(jì)模式之模板模式,基于星際爭(zhēng)霸游戲案例形式分析了php模板模式相關(guān)原理與使用技巧,需要的朋友可以參考下

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

星際中的蟲族部隊(duì)有個(gè)特別的進(jìn)化兵種,就是飛龍,飛龍可以變成空中衛(wèi)士(天蟹)或者吞噬者(對(duì)空的)。另外還有口水兵可以進(jìn)化變成地刺。

這三個(gè)變化過(guò)程都是類似的:變化的原部隊(duì)消失,產(chǎn)生一個(gè)蛋或繭,孵化一會(huì)兒,蛋消失,新的部隊(duì)產(chǎn)生。

如果我們把這三個(gè)進(jìn)化獨(dú)立開(kāi),就會(huì)產(chǎn)生重復(fù)的代碼,冗余度增大了,所以我們要設(shè)法減少多余的代碼。

待解決的問(wèn)題:要經(jīng)歷同樣的幾個(gè)步驟,只是每個(gè)步驟的細(xì)節(jié)會(huì)有不同。

思路:做一個(gè)進(jìn)化工程的框架,我們只要控制細(xì)節(jié)就可以了。

模板模式模式示例:

<?php
  //進(jìn)化的框架類,它是個(gè)抽象類
  abstract class evolution 
  {
    //框架方法,由它來(lái)實(shí)施各個(gè)步驟,用final禁止子類覆蓋
    final public function process($troop)
    {
      //生成一個(gè)蛋,參數(shù)為進(jìn)化的部隊(duì)
      $egg = $this->becomeEgg($troop);

      //等待蛋孵化,參數(shù)為蛋
      $this->waitEgg($egg);

      //孵化后產(chǎn)生新部隊(duì)
      return $this->becomeNew($egg);
    }

    //下面三個(gè)抽象方法,由具體子類來(lái)實(shí)現(xiàn)
    abstract public function becomeEgg($troop);

    abstract public function waitEgg($egg);

    abstract public function becomeNew($egg);
  }

  //為了簡(jiǎn)單說(shuō)明,這里用空中衛(wèi)士(天蟹)的進(jìn)化類來(lái)演示,地刺等的處理方法類似

  //天蟹的進(jìn)化類繼承抽象進(jìn)化類
  class GuardianEvolution extends evolution 
  {
    //實(shí)現(xiàn)生成一個(gè)蛋
    public function becomeEgg($troop)
    {
      //銷毀飛龍,返回一個(gè)蛋的對(duì)象的代碼
    }

    //等待蛋孵化
    public function waitEgg($troop)
    {
      //等待幾十秒鐘的代碼
    }

    //孵化后產(chǎn)生新部隊(duì)
    public function becomeNew(($troop)
    {
      //銷毀蛋,返回一個(gè)天蟹
    }
  }

  //新建一個(gè)天蟹進(jìn)化的對(duì)象
  $e1 = new GuardianEvolution();

  //讓它調(diào)用父類的進(jìn)化框架函數(shù),自動(dòng)完成三個(gè)步驟
  $e1->process($sds);

?>

用途總結(jié):模板模式可以將一系列的步驟自動(dòng)化,同時(shí)又可以滿足不同的細(xì)節(jié)變化。

實(shí)現(xiàn)總結(jié):需要一個(gè)抽象類來(lái)包含框架函數(shù),讓具體的子類繼承它,并實(shí)現(xiàn)所有的步驟。使用的時(shí)候只要調(diào)用框架函數(shù)就自動(dòng)完成了。

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

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

相關(guān)文章

  • YII中assets的使用示例

    YII中assets的使用示例

    這篇文章主要介紹了YII中assets的使用示例,需要的朋友可以參考下
    2014-07-07
  • phpstorm動(dòng)態(tài)調(diào)試環(huán)境部署過(guò)程

    phpstorm動(dòng)態(tài)調(diào)試環(huán)境部署過(guò)程

    這篇文章主要介紹了php代碼審計(jì)phpstorm動(dòng)態(tài)調(diào)試的過(guò)程,xdebug調(diào)試調(diào)試環(huán)境部署的操作過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • PHP 設(shè)計(jì)模式系列之 specification規(guī)格模式

    PHP 設(shè)計(jì)模式系列之 specification規(guī)格模式

    規(guī)格模式是組合模式的一種擴(kuò)展,在框架性開(kāi)發(fā)中使用較多(項(xiàng)目級(jí)開(kāi)發(fā)很少使用),通過(guò)本文給大家介紹PHP 設(shè)計(jì)模式系列之 specification規(guī)格模式,對(duì)specification模式相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • PHP長(zhǎng)網(wǎng)址與短網(wǎng)址的實(shí)現(xiàn)方法

    PHP長(zhǎng)網(wǎng)址與短網(wǎng)址的實(shí)現(xiàn)方法

    這篇文章主要介紹了PHP長(zhǎng)網(wǎng)址與短網(wǎng)址的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-10-10
  • php獲得剛插入數(shù)據(jù)的id 的幾種方法總結(jié)

    php獲得剛插入數(shù)據(jù)的id 的幾種方法總結(jié)

    今天小編就為大家分享一篇php獲得剛插入數(shù)據(jù)的id 的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Yii實(shí)現(xiàn)MySQL多數(shù)據(jù)庫(kù)和讀寫分離實(shí)例分析

    Yii實(shí)現(xiàn)MySQL多數(shù)據(jù)庫(kù)和讀寫分離實(shí)例分析

    這篇文章主要介紹了Yii實(shí)現(xiàn)MySQL多數(shù)據(jù)庫(kù)和讀寫分離的方法,以實(shí)例形式詳細(xì)的分析了Yii數(shù)據(jù)庫(kù)讀寫分離的方法,是開(kāi)發(fā)大型項(xiàng)目非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • 深入理解PHP中的empty和isset函數(shù)

    深入理解PHP中的empty和isset函數(shù)

    下面小編就為大家?guī)?lái)一篇深入理解PHP中的empty和isset函數(shù)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • 淺談Laravel中的一個(gè)后期靜態(tài)綁定

    淺談Laravel中的一個(gè)后期靜態(tài)綁定

    本篇文章主要介紹了淺談Laravel中的一個(gè)后期靜態(tài)綁定,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 如何通過(guò)View::first使用Laravel Blade的動(dòng)態(tài)模板詳解

    如何通過(guò)View::first使用Laravel Blade的動(dòng)態(tài)模板詳解

    這篇文章主要給大家介紹了關(guān)于如何通過(guò)View::first使用Laravel Blade的動(dòng)態(tài)模板的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用php具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。
    2017-09-09
  • Laravel框架實(shí)現(xiàn)model層的增刪改查(CURD)操作示例

    Laravel框架實(shí)現(xiàn)model層的增刪改查(CURD)操作示例

    這篇文章主要介紹了Laravel框架實(shí)現(xiàn)model層的增刪改查(CURD)操作,結(jié)合實(shí)例形式分析了Laravel框架模型model層進(jìn)行數(shù)據(jù)庫(kù)的增刪改查操作具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-05-05

最新評(píng)論

长子县| 肥东县| 虎林市| 兴山县| 通山县| 孝感市| 射洪县| 清新县| 长宁县| 郴州市| 龙岩市| 容城县| 措美县| 丰县| 汨罗市| 明溪县| 易门县| 邓州市| 长春市| 靖西县| 汽车| 安福县| 南投市| 迁安市| 绥中县| 上饶市| 沙湾县| 伽师县| 翁牛特旗| 邵阳县| 安宁市| 丰县| 长汀县| 望奎县| 大港区| 高雄市| 乐清市| 且末县| 绥阳县| 上高县| 灌南县|