Шаблон Factory Method (Фабричный метод) на PHP

ООП в PHP

Factory Method (Фабричный метод) немного похож на Абстрактную фабрику. Он также позволяет спрятать конкретную реализацию и предоставить несколько типовых методов для использования.

Но, о отличие от абстрактной фабрики, фабричный метод даёт возможность задать какой именно класс «реализации» использовать в конкретной фабрике.

Читать дальше →

Шаблон Abstract Factory (Абстрактная фабрика) на PHP

ООП в PHP

Паттерн «Абстрактная фабрика» довольно распространён, особенно часто приходится слышать выражение «использовать фабрику» среди программистов, которые делают вид, что разбираются в шаблонах проектирования. :)

Строго говоря, «фабрик» две: абстрактная фабрика и фабричный метод. Основная суть у них похожа, но разнится реализация. Поэтому желательно уточнять какая именно фабрика используется. Сейчас поговорим про Abstract Factory.

Читать дальше →

Шаблон проектирования Facade (Фасад)

ООП в PHP

Наверное это самый простой паттерн, который используется повсеместно. Задача фасада — скрыть сложную реализацию внутри какого-то класса. То есть если есть 10 классов, у которых нужно выполнить кучу методов, то мы просто делаем один класс-фасад, который их и выполняет. У нас же останется только один «пусковой» метод.

Читать дальше →

Шаблон «Fluent interface» (Текучий интерфейс)

ООП в PHP

Строго говоря, «Текучий интерфейс» даже не сколько паттерн, сколько методика организации кода, направленная на то, чтобы упростить его чтение. Вместо последовательных вызовов функций в каждой строчке, организуется цепочка методов. Наверняка вы с таким встречались:

$fullName = (new MyName())->setFirstName('Don')->setLastName('Joe')->getResult();

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

Читать дальше →

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

ООП в PHP

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

Все шаблоны я писал сам, но, естественно, ориентировался на существующий код и описания (почти всё с википедии и книг по Java). В основном, конечно это Java и C#, поскольку паттерны были придуманы для «больших» языков, а реализации в PHP лишь пытаются повторить их код. Это одна из проблем, поскольку PHP сам по себе уже имеет ряд готовых решений где использование шаблона просто не имеет смысла. Например шаблон Prototype (Прототип) реализуется через cloneи ничего придумывать не нужно. Или шаблон Iterator (Итератор) по сути сводится к перебору массива, поскольку массив в PHP — универсальная структура и может содержать не только простые данные, вроде строк и чисел, но и сложные — объекты. Конечно, можно перевести код этих шаблонов с Java на PHP, но большого смысла это иметь не будет, разве что для теоретического изучения.

Шаблонов проектирования много и разобраться в них сходу не получится. Мои варианты шаблонов имеют пару особенностей. Первая — это реальный исполняемый код. То есть вы можете запустить на сервере index.php и получите результат в браузер. Сам шаблон и вся его работа размещена в одном файле для удобства (чтобы не прыгать по нескольким файлам).

Читать дальше →

Перейти к странице: