10. Коротко ООП PHP – Шаблоны (паттерны) ООП. Типы шаблонов

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

Порождающие (Creational) – описывают механизм создания объекта и пытаются создать их в порядке, подходящем к ситуации.
Структурные (Structural) – упрощают проектирование путем выявления простого способа реализовать отношения между субъектами.
Поведенческие (Behavioral) – решают вопросы эффективного и безопасного взаимодействия между объектами.

Порождающие шаблоны
Abstract Factory (Абстрактная фабрика) – позволяет создавать целые группы взаимосвязанных объектов, которые, будучи созданными одной фабрикой, реализуют общее поведение.
Builder (Строитель) – используется для отделения процесса конструирования сложного объекта от его представления, так что в результате одного и того же конструирования могут получаться различные объекты. Этот паттерн очень похож на абстрактную фабрику, но в нем акцентируется пошаговое конструирование объекта – в отличие от фабрики, где конструируется семейство классов.
Factory Method (Фабричный метод) – предоставляет подклассам интерфейс для создания экземпляров некоторого класса.
Prototype (Прототип) – используется для задания вида создаваемых объектов на основе объекта прототипа, от которого происходит передача внутреннего состояния (создаёт новые объекты путём копирования прототипа).

Структурные шаблоны
Adapter (Адаптер) – предназначен для организации использования функций объекта, недоступного для модификации, через специально созданный интерфейс.
Bridge (Мост) – используется для отделения абстракции от ее реализации так, чтобы и то и другое можно было изменять независимо.
Composite (Компоновщик) – используется для компоновки объектов в древовидные структуры для представления иерархий, позволяя одинаково трактовать индивидуальные и составные объекты.
Decorator (Декоратор) – используется для динамического расширения функциональности объекта. Является гибкой альтернативой наследованию.
Facade (Фасад) – представляет собой унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Паттерн фасад определяет интерфейс более высокого уровня, который упрощает использование подсистем.
Flyweight (Приспособленец) – используется для уменьшения затрат при работе с большим количеством мелких объектов.
Proxy (Прокси) – который предоставляет объект, который контролирует доступ к другому объекту, перехватывая все вызовы (выполняет функцию контейнера).

Поведенческие шаблоны
Chain of responsibility (Цепочка обязанностей) – служит для ослабления связи между отправителем и получателем запроса. При этом сам по себе запрос может быть произвольным.
Command (Команда) – представляет собой действие. Объект команды заключает в себе само действие и его параметры.
Interpreter (Интерпретатор) – решает часто встречающуюся, но подверженную изменениям, задачу.
Iterator (Итератор) – представляет собой объект, позволяющий получить последовательный доступ к элементам объекта-агрегата без использования описаний каждого из агрегированных объектов.
Mediator (Медиатор) – обеспечивает взаимодействие множества объектов, формируя при этом слабую связанность и избавляя объекты от необходимости явно ссылаться друг на друга.
Memento (Хранитель) – позволяет, не нарушая инкапсуляцию, зафиксировать и сохранить внутреннее состояние объекта так, чтобы позднее восстановить его в это состояние.
Observer (Наблюдатель) – создает механизм у класса, который позволяет получать экземпляру объекта этого класса оповещения от других объектов об изменении их состояния, тем самым наблюдая за ними.
State (Состояние) – используется в тех случаях, когда во время выполнения программы объект должен менять свое поведение в зависимости от своего состояния.
Strategy (Стратегия) – предназначен для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет выбирать алгоритм путем определения соответствующего класса. Шаблон Strategy позволяет менять выбранный алгоритм независимо от объектов-клиентов, которые его используют.
Template Method (Шаблонный метод) – определяет основу алгоритма и позволяет наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом.
Visitor (Посетитель) – описывает операцию, которая должна быть выполнена над каждым объектом из некоторой произвольной структуры.

Подробно о каждом шаблоне с примерами UML диаграммами и тестами, можно прочитать здесь:
https://nixsolutions.github.io/design-patterns/
http://designpatternsphp.readthedocs.io/ru/latest/
https://github.com/kamranahmedse/design-patterns-for-humans

Оставить комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены *

Scroll Up