Шаблоны проектирования PHP

Шаблоны проектирования PHP
PHP — шаблоны проектирования

Теория шаблонов проектирования Microsoft: «Документ вводит шаблоны, а затем представляет их в репозитории или каталоге, который организован так, чтобы помочь вам найти правильную комбинацию шаблонов, которая решает вашу проблему».

Примеры шаблонов проектирования

Синглтон

Класс имеет один экземпляр, он обеспечивает глобальную точку доступа к нему. Следующий код объяснит концепцию синглтона.

<?php
   class Singleton {
      public static function getInstance() {
         static $instance = null;
         
         if (null === $instance) {
            $instance = new static();
         }
         return $instance;
      }
      protected function __construct() {
      }
      
      private function __clone() {
      }
      
      private function __wakeup() {
      }
   }
   
   class SingletonChild extends Singleton {
   }
   
   $obj = Singleton::getInstance();
   var_dump($obj === Singleton::getInstance());
   
   $anotherObj = SingletonChild::getInstance();
   var_dump($anotherObj === Singleton::getInstance());
   var_dump($anotherObj === SingletonChild::getInstance()); 
?>

Вышеупомянутый пример, реализованный на основе создания статического метода, — это getInstance ()

Завод

Простой класс Создает объект, и вы хотите использовать этот объект. Следующий пример объяснит шаблон проектирования фабрики.

<?php
   class Automobile {
      private $bikeMake;
      private $bikeModel;
      
      public function __construct($make, $model) {
         $this->bikeMake = $make;
         $this->bikeModel = $model;
      }
      
      public function getMakeAndModel() {
         return $this->bikeMake . ' ' . $this->bikeModel;
      }
   }
   
   class AutomobileFactory {
      public static function create($make, $model) {
         return new Automobile($make, $model);
      }
   }
   
   $pulsar = AutomobileFactory::create('ktm', 'Pulsar');
   print_r($pulsar->getMakeAndModel());
   
   class Automobile {
      private $bikeMake;
      private $bikeModel;
      
      public function __construct($make, $model) {
         $this->bikeMake = $make;
         $this->bikeModel = $model;
      }
      
      public function getMakeAndModel() {
         return $this->bikeMake . ' ' . $this->bikeModel;
      }
   }
   
   class AutomobileFactory {
      public static function create($make, $model) {
         return new Automobile($make, $model);
      }
   }
   t$pulsar = AutomobileFactory::create('ktm', 'pulsar');
   
   print_r($pulsar->getMakeAndModel()); 
?>

Основная трудность с фабричным шаблоном состоит в том, что он увеличивает сложность и ненадежен для хороших программистов.

Шаблон стратегии

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

<?php
   $elements = array(
      array(
         'id' => 2,
         'date' => '2011-01-01',
      ),
      array(
         'id' => 1,
         'date' => '2011-02-01'
      )
   );
   
   $collection = new ObjectCollection($elements);
   
   $collection->setComparator(new IdComparator());
   $collection->sort();
   
   echo "Sorted by ID:\n";
   print_r($collection->elements);
   
   $collection->setComparator(new DateComparator());
   $collection->sort();
   
   echo "Sorted by date:\n";
   print_r($collection->elements);
?>

Управление представлением модели

Представление действует как графический интерфейс, модель действует как серверная часть, а элемент управления действует как адаптер. Здесь три части взаимосвязаны между собой. Он будет передавать данные и обращаться к ним друг с другом.

Управление представлением модели

Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки