Рубрики
Uncategorized

Анализ промежуточного режима шаблона проектирования PHP

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

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

Система обновления interstellar относительно сбалансирована. Однако производство многих вооружений и зданий требует соответствующих научных и технологических зданий, поэтому взаимосвязь является сложной. Например, после того, как будет построена научная станция, все аэропорты смогут строить научно – технические шары. Но как только научная станция будет уничтожена, это зависит от того, есть ли научная станция, иначе все аэропорты не смогут строить научно – технические шары. Мы можем использовать режим наблюдателя, упомянутый в прошлый раз, чтобы решить проблему, но это кажется проблематичным, потому что есть много обновлений, связанных с interstellar. На самом деле, по сути, для любого обновления, как правило, требуется только знать, существует ли определенное здание, поэтому нам не нужно позволять им связываться друг с другом многими и устанавливать посредника. Это похоже на то, что независимо от того, что мы покупаем, мы можем пойти в супермаркет, и производителю нужно только связаться с супермаркетом, и ему не нужно напрямую связываться с каждым из наших потребителей.

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

Мышление: Создать посредника. Каждый раз, когда вы сталкиваетесь с чем-то, связанным с технологией производства, спрашивайте посредника.

Пример режима посредника:

php
  //Intermediary
  class Mediator
  {
    //To store the number of science and technology buildings, for the sake of simple explanation, static attributes can also be used to process each object
    public static $techBuilding;
    //According to the building name represented by the parameter $techbuildingname, it returns whether there is a corresponding science and technology building. For simple description, it uses static attributes
    public static function isTechAllow ($techBuildingName)
    {
      //If the number of science and technology buildings is greater than zero, return true, otherwise return false
      return self::$techBuilding[$techBuildingName]>0;
    }
    //Once a technology building is built or destroyed, call this method. The parameter $techbuildingname represents the building name, the $add is a Boolean value, true represents increase (build), and false represents decrease (destroy)
    public static function changeTech ($techBuildingName, $add)
    {
      //Build
      if ($add)
      {
        //Increase quantity
        self::$techBuilding[$techBuildingName]++;
      }
      else
      {
        //Reduce quantity
        self::$techBuilding[$techBuildingName]--;
      }
    }
  }
  //Science and technology stations
  class ScienceFacility
  {
    //Construction method
    public function __construct()
    {
      Mediator::changeTech('ScienceFacility', true);
    }
    //Deconstruction method
    public function __destruct()
    {
      Mediator::changeTech('ScienceFacility', false);
    }
  }
  //Airports
  class Starport
  {
    //The method of manufacturing technology ball
    public function createScienceVessel ()
    {
      //Ask the intermediary to decide whether it is possible to make a technology ball
      Echo mediator:: isttechallow ('science facility ')?' can make technology ball ':'can't make technology ball';
    }
  }
  //Build a technology station
  $scienceFacility1 = new ScienceFacility();
  //A new science and technology station
  $scienceFacility2 = new ScienceFacility();
  //Build an airport
  $starport = new Starport();
  //Build科技球,结果是能够
  $starport->createScienceVessel();
  echo "
"; //A technology station was destroyed unset($scienceFacility1); //At this time, we build a technology ball, and the result is that we can, because there is also a technology station $starport->createScienceVessel(); echo "
"; //Another tech station was destroyed unset($scienceFacility2); //At this time, it is impossible to build a technology ball $starport->createScienceVessel(); ?>

Результаты работы:

Вы можете создавать технологические шары, Вы можете создавать технологические шары, Вы не можете создавать технологические шары.

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

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

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

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

Оригинал: “https://developpaper.com/analysis-of-the-intermediary-mode-of-php-design-pattern/”