欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

模板模式模式示例:

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

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

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

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

    abstract public function waitEgg($egg);

    abstract public function becomeNew($egg);
  }

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

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

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

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

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

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

?>

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

實現(xiàn)總結(jié):需要一個抽象類來包含框架函數(shù),讓具體的子類繼承它,并實現(xiàn)所有的步驟。使用的時候只要調(diào)用框架函數(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è)計有所幫助。

相關(guān)文章

  • smarty內(nèi)置函數(shù)section的用法

    smarty內(nèi)置函數(shù)section的用法

    這篇文章主要介紹了smarty內(nèi)置函數(shù)section的用法,實例分析了section的使用技巧與相關(guān)的參數(shù)說明,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • PHP 爬取網(wǎng)頁的主要方法

    PHP 爬取網(wǎng)頁的主要方法

    這篇文章主要介紹了PHP 爬取網(wǎng)頁的主要方法,主要是獲取整個網(wǎng)頁,然后正則匹配,需要的朋友可以參考下
    2018-07-07
  • thinkphp5+layui實現(xiàn)的分頁樣式示例

    thinkphp5+layui實現(xiàn)的分頁樣式示例

    這篇文章主要介紹了thinkphp5+layui實現(xiàn)的分頁樣式,結(jié)合實例形式詳細(xì)分析了thinkPHP5框架結(jié)合layui實現(xiàn)的分頁功能相關(guān)的配置、查詢等操作技巧,需要的朋友可以參考下
    2019-10-10
  • PHP-FPM 的管理和配置詳解

    PHP-FPM 的管理和配置詳解

    這篇文章主要介紹了PHP-FPM 的管理和配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 基于Zookeeper的使用詳解

    基于Zookeeper的使用詳解

    本篇文章介紹了,基于Zookeeper的使用說明,需要的朋友參考下
    2013-05-05
  • thinkPHP交易詳情查詢功能詳解

    thinkPHP交易詳情查詢功能詳解

    這篇文章主要介紹了thinkPHP交易詳情查詢功能,結(jié)合實例形式分析了thinkPHP數(shù)據(jù)庫查詢功能及視圖輸出相關(guān)操作技巧,需要的朋友可以參考下
    2016-12-12
  • yii2分頁之實現(xiàn)跳轉(zhuǎn)到具體某頁的實例代碼

    yii2分頁之實現(xiàn)跳轉(zhuǎn)到具體某頁的實例代碼

    這篇文章主要介紹了yii2分頁之實現(xiàn)跳轉(zhuǎn)到具體某頁的實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • laravel使用Faker數(shù)據(jù)填充的實現(xiàn)方法

    laravel使用Faker數(shù)據(jù)填充的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于laravel使用Faker數(shù)據(jù)填充的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用laravel具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 淺談php函數(shù)serialize()與unserialize()的使用方法

    淺談php函數(shù)serialize()與unserialize()的使用方法

    在php中serialize()與unserialize()函數(shù)是一對函數(shù),下面本文章就來為各位同學(xué)介紹serialize()與unserialize()函數(shù)的使用例子,希望能幫助到各位。
    2014-08-08
  • PHP創(chuàng)建PowerPoint2007文檔的方法

    PHP創(chuàng)建PowerPoint2007文檔的方法

    這篇文章主要介紹了PHP創(chuàng)建PowerPoint2007文檔的方法,通過PHP第三方插件PHPPowerPoint類庫實現(xiàn)ppt文件的生成功能,非常具有實用價值,需要的朋友可以參考下
    2015-12-12

最新評論