中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在php中應用策略模式

發布時間:2021-06-07 17:42:49 來源:億速云 閱讀:148 作者:Leah 欄目:開發技術

本篇文章為大家展示了怎么在php中應用策略模式,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

待解決的問題:我們需要根據種族的不同,而對玩家進行不同的初始化,最好將這些不同的處理方式封裝。

思路:定義初始化的接口,然后制作不同種族的初始化類。

策略模式(Strategy)示例:

為了使代碼不至于過長,一部分類的定義不在此寫出,如果要調試,請用字符串等方式替代new。

<?php
  //玩家的類
  class player
  {
    //所屬種族
    public $race;

    //部隊
    public $army;

    //建筑
    public $building;

    //人口供給
    public $supply;

    //構造函數,設定所屬種族
    public function __construct($race)
    {
      $this->race = $race;
    }
  }

  //初始化的接口
  interface initialPlayer 
  {
    //制造初始化的部隊
    public function giveArmy($player);

    //制造初始化的建筑
    public function giveBuilding($player);

    //初始化人口供給
    public function giveSupply($player);
  }

  //蟲族的初始化算法
  class zergInitial implements initialPlayer 
  {
    //制造初始化的部隊
    public function giveArmy($player)
    {
      //一個Overlord
      $player->army[] = new Overlord();

      //四個蟲族農民
      for($i=0; $i<4;$i++)
      {
        $player->army[] = new Drone();
      }
    }

    //制造初始化的建筑
    public function giveBuilding($player)
    {
      //一個基地
      $player->building[] = new Hatchery();
    }

    //初始化人口供給
    public function giveSupply($player)
    {
      //蟲族初始人口供給為9
      $player->supply = 9;
    }
  }

  //人族的初始化算法
  class terranInitial implements initialPlayer 
  {
    //制造初始化的部隊
    public function giveArmy($player)
    {
      //四個人族農民
      for($i=0; $i<4;$i++)
      {
        $player->army[] = new SVC();
      }
    }

    //制造初始化的建筑
    public function giveBuilding($player)
    {
      //一個基地
      $player->building[] = new Hatchery();
    }

    //初始化人口供給
    public function giveSupply($player)
    {
      //人族初始人口供給為10
      $player->supply = 10;
    }
  }

  //初始化的控制類
  class initialController 
  {
    //構造函數,參數為玩家的數組
    public function __construct($playerArray)
    {
      foreach ($playerArray as $player)
      {
        switch ($player->race)
        {
          case 'zerg':
            $initialController = new zergInitial();
            break;
          case 'terran':
            $initialController = new terranInitial();
            break;
        }

        $initialController->giveArmy($player);
        $initialController->giveBuilding($player);
        $initialController->giveSupply($player);
      }
    }
  }

  //假設兩個蟲族,一個人族
  $playerArray = array(
    new player('zerg'), 
    new player('zerg'), 
    new player('terran'),
  );

  //進行初始化工作
  $initialController = new initialController($playerArray);
?>

用途總結:策略模式可以將不同情況下的算法封裝,根據具體的情況調用。

實現總結:需要一個接口,規定算法規范,使用者(比如初始化來)只要調用對應的算法就可以了。

上述內容就是怎么在php中應用策略模式,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

临清市| 巴彦县| 汉中市| 乐亭县| 金溪县| 五寨县| 富川| 铜鼓县| 邯郸市| 淳化县| 农安县| 沾益县| 太仆寺旗| 南雄市| 潼关县| 兴和县| 年辖:市辖区| 桐庐县| 平潭县| 夏津县| 太仓市| 建瓯市| 乌兰察布市| 万山特区| 红河县| 昌江| 敦煌市| 乐昌市| 四平市| 衡水市| 大方县| 永丰县| 双江| 桓台县| 蕲春县| 石楼县| 郴州市| 永宁县| 铁岭市| 金川县| 富川|