主頁(yè) > 知識(shí)庫(kù) > php設(shè)計(jì)模式之職責(zé)鏈模式實(shí)例分析【星際爭(zhēng)霸游戲案例】

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

熱門(mén)標(biāo)簽:正規(guī)電銷(xiāo)機(jī)器人系統(tǒng) 嘟嘟云外呼系統(tǒng) 重慶外呼電銷(xiāo)系統(tǒng)多少錢(qián) 南京3D地圖標(biāo)注 濟(jì)源百應(yīng)電銷(xiāo)機(jī)器人聯(lián)系方式 辦理400電話哪家好點(diǎn) 咸陽(yáng)電銷(xiāo) 南寧電話外呼系統(tǒng)線路 邢臺(tái)400電話辦理

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

星際的兵種屬性隨著對(duì)平衡性的調(diào)節(jié),會(huì)進(jìn)行修改。如果這樣的話,我們就要考慮減少一個(gè)事件和具體處理的關(guān)聯(lián)性。

比如一顆原子彈投下的瞬間,在殺傷范圍內(nèi)的部隊(duì)或者建筑都會(huì)減少血,但是隨著距離中心點(diǎn)的遠(yuǎn)近,受損程度是不同的,而且不同的兵種和建筑受損情況是不同的。

待解決的問(wèn)題:原子彈投下的瞬間,將殺傷的處理分別交給殺傷范圍內(nèi)的部隊(duì)或者建筑自己的方法處理。

思路:建立一個(gè)接口,讓所有的部隊(duì)或者建筑實(shí)現(xiàn)。

職責(zé)鏈模式(Chain of Responsibility)示例:

?php
  //被原子彈攻擊的接口
  interface NuclearAttacked 
  {
    //處理被原子彈攻擊的方法,參數(shù)為投放點(diǎn)的x和y坐標(biāo)
    public function NuclearAttacked($x, $y);
  }

  //人族的基地,實(shí)現(xiàn)被原子彈攻擊的接口,其他的內(nèi)容暫時(shí)不考慮
  class CommandCenter implements NuclearAttacked 
  {
    //處理被原子彈攻擊的方法,參數(shù)為投放點(diǎn)的x和y坐標(biāo)
    public function NuclearAttacked($x, $y)
    {
      //根據(jù)離原子彈中心的距離,定義減少的血,如果超出了剩余的血,就炸掉
    }
  }

  //巡洋艦(俗稱(chēng)大和),實(shí)現(xiàn)被原子彈攻擊的接口,其他的內(nèi)容暫時(shí)不考慮
  class Battlecruiser implements NuclearAttacked 
  {
    //處理被原子彈攻擊的方法,參數(shù)為投放點(diǎn)的x和y坐標(biāo)
    public function NuclearAttacked($x, $y)
    {
      //根據(jù)離原子彈中心的距離,定義減少的血,如果超出了剩余的血,就炸掉
    }
  }

  //原子彈類(lèi)
  class Nuclear 
  {
    //被原子彈攻擊的對(duì)象
    public $attackedThings;

    //添加被原子彈攻擊的對(duì)象
    public function addAttackedThings($thing)
    {
      //添加被原子彈攻擊的對(duì)象
      $this->attackedThings[] = $thing;
    }

    //原子彈爆炸的方法,參數(shù)為投放點(diǎn)的x和y坐標(biāo)
    public function blast($x, $y)
    {
      //把爆炸的事情交給所有涉及的對(duì)象,讓他們自己處理
      foreach ($this->attackedThings as $thing)
      {
        //把爆炸的事情交給所有涉及的對(duì)象,讓他們自己處理
        $thing->NuclearAttacked($x, $y);
      }
    }
  }

  //新建一個(gè)基地對(duì)象
  $CommandCenter = new CommandCenter();

  //新建一個(gè)巡洋艦對(duì)象
  $Battlecruiser = new Battlecruiser();

  //造了一顆原子彈
  $Nuclear2 = new Nuclear();

  //假設(shè)投放成功,那個(gè)瞬間一個(gè)基地對(duì)象和一個(gè)巡洋艦對(duì)象在殺傷范圍內(nèi)
  $Nuclear2->addAttackedThings($CommandCenter);
  $Nuclear2->addAttackedThings($Battlecruiser);

  //原子彈爆炸,這樣就把這個(gè)事件交給那些涉及的對(duì)象的處理方法,假設(shè)投放點(diǎn)的x和y坐標(biāo)是2353, 368
  $Nuclear2->blast(2353, 368);
?>

用途總結(jié):職責(zé)鏈模式可以將一個(gè)涉及到多個(gè)對(duì)象的事件的處理交給對(duì)象自己處理,減少關(guān)聯(lián)性。

實(shí)現(xiàn)總結(jié):需要一個(gè)處理事件的接口,然后讓所有的對(duì)象實(shí)現(xiàn)。

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

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

您可能感興趣的文章:
  • php設(shè)計(jì)模式 Adapter(適配器模式)
  • PHP設(shè)計(jì)模式之適配器模式代碼實(shí)例
  • php設(shè)計(jì)模式之適配器模式原理、用法及注意事項(xiàng)詳解
  • php設(shè)計(jì)模式之迭代器模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
  • php設(shè)計(jì)模式之觀察者模式實(shí)例詳解【星際爭(zhēng)霸游戲案例】
  • php設(shè)計(jì)模式之正面模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
  • php設(shè)計(jì)模式之模板模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
  • php設(shè)計(jì)模式之原型模式分析【星際爭(zhēng)霸游戲案例】
  • php設(shè)計(jì)模式之代理模式分析【星際爭(zhēng)霸游戲案例】
  • php設(shè)計(jì)模式之中介者模式分析【星際爭(zhēng)霸游戲案例】
  • php設(shè)計(jì)模式之適配器模式實(shí)例分析【星際爭(zhēng)霸游戲案例】

標(biāo)簽:南通 平頂山 唐山 隴南 通遼 黃山 河南 武漢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php設(shè)計(jì)模式之職責(zé)鏈模式實(shí)例分析【星際爭(zhēng)霸游戲案例】》,本文關(guān)鍵詞  php,設(shè)計(jì)模式,之,職責(zé),鏈,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php設(shè)計(jì)模式之職責(zé)鏈模式實(shí)例分析【星際爭(zhēng)霸游戲案例】》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于php設(shè)計(jì)模式之職責(zé)鏈模式實(shí)例分析【星際爭(zhēng)霸游戲案例】的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章