Рубрики
Uncategorized

Пример анализа шаблона разработки PHP шаблон стратегии

Автор оригинала: David Wong.

В этой статье описывается шаблон разработки PHP шаблона стратегии. Подробности заключаются в следующем:

Через 5 секунд после входа на карту у каждого игрока будет база, несколько фермеров и т.д., А также начальный запас населения. Но они различаются в зависимости от расы.

Проблемы, которые необходимо решить: Нам нужно инициализировать разных игроков в соответствии с разными расами. Лучше инкапсулировать эти различные методы обработки.

Мышление: Определите интерфейс инициализации, а затем создайте классы инициализации разных рас.

Пример стратегии:

Чтобы код не был слишком длинным, определение классификации здесь не написано. Если вы хотите отладить, пожалуйста, используйте строку вместо новой.

php
  //Player's class
  class player
  {
    //Race
    public $race;

    //Troops
    public $army;

    //Architecture
    public $building;

    //Population supply
    public $supply;

    //Constructor to set the race
    public function __construct($race)
    {
      $this->race = $race;
    }
  }

  //Initialized interface
  interface initialPlayer 
  {
    //Build an initial force
    public function giveArmy($player);

    //Building for manufacturing initialization
    public function giveBuilding($player);

    //Initial population supply
    public function giveSupply($player);
  }

  //Initialization algorithm of Zerg
  class zergInitial implements initialPlayer 
  {
    //Build an initial force
    public function giveArmy($player)
    {
      //An overlord
      $player->army[] = new Overlord();

      //Four Zerg farmers
      for($i=0; $i<4;$i++)
      {
        $player->army[] = new Drone();
      }
    }

    //Building for manufacturing initialization
    public function giveBuilding($player)
    {
      //A base
      $player->building[] = new Hatchery();
    }

    //Initial population supply
    public function giveSupply($player)
    {
      //The initial population supply of Zerg is 9
      $player->supply = 9;
    }
  }

  //Initialization algorithm of human race
  class terranInitial implements initialPlayer 
  {
    //Build an initial force
    public function giveArmy($player)
    {
      //Peasants of Four Nationalities
      for($i=0; $i<4;$i++)
      {
        $player->army[] = new SVC();
      }
    }

    //Building for manufacturing initialization
    public function giveBuilding($player)
    {
      //A base
      $player->building[] = new Hatchery();
    }

    //Initial population supply
    public function giveSupply($player)
    {
      //The initial population supply of the Terran is 10
      $player->supply = 10;
    }
  }

  //Initialized control class
  class initialController 
  {
    //Constructor, the parameter is an array of players
    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);
      }
    }
  }

  //Suppose there are two Zerg and one hominid
  $playerArray = array(
    new player('zerg'), 
    new player('zerg'), 
    new player('terran'),
  );

  //Perform initialization
  $initialController = new initialController($playerArray);
?>

Краткое описание использования: Шаблон политики может инкапсулировать алгоритм в различных ситуациях и вызывать его в соответствии с конкретной ситуацией.

Краткое описание реализации: Для указания спецификации алгоритма необходим интерфейс. Пользователям (например, для инициализации) нужно только вызвать соответствующий алгоритм.

Подробнее о содержании, связанном с PHP, заинтересованные читатели могут ознакомиться со специальными разделами этого веб-сайта: “Вводный учебник по объектно-ориентированному программированию PHP”, “Энциклопедия навыков работы с массивами PHP”, “Вводный учебник по базовой грамматике PHP”, “Краткое описание операций PHP и использования операторов”, “Краткое описание использования строк PHP”, “Вводный учебник по работе с базой данных PHP + MySQL” и “Общая работа с базой данных PHP” Краткое описание навыков написания

Я надеюсь, что эта статья будет полезна для программирования на PHP.