亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么在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

榆树市| 安泽县| 蒲城县| 陕西省| 读书| 秀山| 都兰县| 屯门区| 金山区| 湘潭市| 闸北区| 龙口市| 平潭县| 棋牌| 马关县| 六安市| 吴旗县| 麦盖提县| 江阴市| 祁东县| 吉木乃县| 绥芬河市| 比如县| 唐海县| 临江市| 仲巴县| 花莲县| 柯坪县| 武宁县| 三江| 辛集市| 龙口市| 信阳市| 灵川县| 嵊州市| 长岛县| 五原县| 东乡县| 新巴尔虎左旗| 沁阳市| 康平县|