Рубрики
Uncategorized

Пример анализа режима адаптера шаблона проектирования PHP

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

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

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

Если мы будем следовать общей идее и поместим управление навыком и управление как метод в класс определения каждой ветви, код будет повторяться и его будет нелегко изменить.

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

При проектировании гидралисков мы можем заставить гидралиски наследовать базовый класс зергов.

Однако гидру можно использовать для бурения грунта, что не является уникальной функцией Гидры, но является общей особенностью наземных сил зергов. Мы также должны рассматривать буровую площадку как общественный базовый класс.

Проблема в том, что мы не можем позволить классу snake наследовать два класса одновременно, чего не позволяет PHP.

Проблемы, которые необходимо решить: Как смешивать и повторно использовать два класса,

Мышление: Унаследуйте класс, возьмите объект нового класса в качестве свойства, а затем вызовите метод второго класса через это свойство.

Пример режима адаптера:

php
  //Zerg groups
  class Zerg
  {
    //Blood
    public $blood;

    //Methods of recovering blood
    public function restoreBlood()
    {
      //Automatic gradual recovery of blood of arms
    }
  }

  //Class of drilling
  class Burrow
  {
    //Methods of drilling
    public function burrowOperation()
    {
      //Drilling, stealth, etc
      Echo 'I've got to the ground';
    }
  }

  //Serpent species
  class Hydralisk extends Zerg
  {
    //Use an attribute to store the drill object
    public $burrow;

    //Construction method, because PHP does not allow the default value to take the object, so through the initialization assignment to $burrow
    public function __construct()
    {
      $this->burrow=new Burrow();
    }

    //Methods of drilling
    public function burrowOperation()
    {
      //Call the object stored by the drilling property and use the method of the drilling class
      $this->burrow->burrowOperation();
    }
  }

  //Make a snake
  $h1 = new Hydralisk();

  //Let him drill
  $h1->burrowOperation();

  //Run output: I drilled the ground

?>

Краткое описание использования: Шаблон адаптера позволяет классу использовать функции двух базовых классов одновременно, что нарушает ограничение чистого наследования. Существует много видов эффективного повторного использования.

Краткое описание реализации: Пусть новый класс унаследует базовый класс, затем сохранит объекты других классов через свойства нового класса и вызовет методы других классов через эти объекты

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

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