Рубрики
Uncategorized

Анализ шаблонного метода Модели шаблонов проектирования PHP

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

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

Определите структуру алгоритма в операции и отложите некоторые шаги до подклассов. Это позволяет подклассам переопределять некоторые конкретные шаги алгоритма без изменения структуры алгоритма.

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

  • Базовые методы, также известные как базовые операции, – это методы, реализуемые подклассами и вызываемые в методах шаблона.
  • Шаблонный метод, может иметь один или несколько, как правило, специфический метод, то есть структуру, для достижения планирования основных методов, полной фиксированной логики.

Примечание: Для предотвращения вредоносных операций в метод общего шаблона добавляется ключевое слово final, которое нельзя перезаписывать.

Примечание: Базовый метод в абстрактном шаблоне разработан как Защищенный тип, насколько это возможно, что соответствует правилу Димитара. Атрибуты или методы, которые не нужно раскрывать, не следует устанавливать как можно более защищенный тип. Если класс реализации не является необходимым, постарайтесь не расширять права доступа в родительском классе.

Преимущества Шаблоны Шаблонных Методов

  • Инкапсулируйте инвариантную часть и разверните переменную часть.
  • Извлеките общую часть кода, простую в обслуживании.
  • Поведение контролируется родительским классом и реализуется дочерним классом.

Пример:

php
/**
 * Model Method Patterns
 */
abstract class ACar {
  abstract protected function start();
  abstract protected function engineBoom();
  abstract protected function alarm();
  abstract protected function stop();
  public function run() {
    $this->start();
    $this->engineBoom();
    $this->alarm();
    $this->stop();
  }
}
final class Benz extends ACar {
  protected function start() {
    echo 'Benz start' . PHP_EOL;
  }
  protected function engineBoom() {
    echo 'Benz engine boom' . PHP_EOL;
  }
  protected function alarm() {
    echo 'Benz alarm' . PHP_EOL;
  }
  protected function stop() {
    echo 'Benz stop' . PHP_EOL;
  }
}
final class BMW extends ACar {
  protected function start() {
    echo 'BMW start' . PHP_EOL;
  }
  protected function engineBoom() {
    echo 'BMW engine boom' . PHP_EOL;
  }
  protected function alarm() {
    echo 'BMW alarm' . PHP_EOL;
  }
  protected function stop() {
    echo 'BMW stop' . PHP_EOL;
  }
  // Modification order
  public function run() {
    $this->start();
    $this->alarm();
    $this->engineBoom();
    $this->stop();
  }
}
class Client {
  public static function run() {
    $benz = new Benz();
    $benz->run();
    $bmw = new BMW();
    $bmw->run();
  }
}
Client::run();

Результаты операции:

Бенц звезда Бенц стрела двигателя Бенц сигнализация Бенц остановка стартера БМВ BMW сигнализация БМВ стрела двигателя БМВ остановка

Примечание: Часть содержимого извлечена из《 Дзен шаблонов проектирования

Больше читателей, интересующихся контентом, связанным с PHP, могут ознакомиться с темами этого сайта: Введение в объектно-ориентированное программирование Php, Введение в навыки работы с массивами PHP, Введение в базовую грамматику PHP, Краткое описание работы с PHP и использования операторов, Краткое описание использования строк Php, Введение в работу с базой данных php+mysql и Общие операции с базами данных php. Краткое изложение навыков письма ___________

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