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

php設計模式之職責鏈模式實例分析【星際爭霸游戲案例】

 更新時間:2020年03月27日 08:45:11   作者:DavidHHuan  
這篇文章主要介紹了php設計模式之職責鏈模式,結合星際爭霸游戲案例形式分析了php職責鏈模式相關概念、原理、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了php設計模式之職責鏈模式。分享給大家供大家參考,具體如下:

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

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

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

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

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

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

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

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

  //原子彈類
  class Nuclear 
  {
    //被原子彈攻擊的對象
    public $attackedThings;

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

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

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

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

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

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

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

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

實現(xiàn)總結:需要一個處理事件的接口,然后讓所有的對象實現(xiàn)。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

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

相關文章

最新評論

天峨县| 霍山县| 化州市| 霍邱县| 南投市| 定南县| 长宁县| 萨嘎县| 宁蒗| 嘉峪关市| 磐安县| 方城县| 济南市| 雷波县| 利津县| 孟津县| 沈丘县| 梁山县| 运城市| 新绛县| 镇坪县| 静宁县| 木里| 广宁县| 阳西县| 安义县| 锦州市| 克什克腾旗| 田林县| 迁西县| 宁德市| 蓝田县| 广宗县| 永丰县| 积石山| 临安市| 上蔡县| 西畴县| 略阳县| 壶关县| 泰兴市|