Теория шаблонов проектирования 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 ().
завод
Класс Simple Создает объект, и вы хотите использовать этот объект. Следующий пример объяснит шаблон фабричного проектирования.
<?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); ?>
Управление представлением модели
Представление действует как GUI, Модель действует как Бэкэнд, а Управление действует как адаптер. Здесь три части связаны между собой. Он будет передавать данные и получать доступ к данным между собой.