RuKoder.ru RUKODER.ru
21 МАРТ 2017
0

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

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

Добавить комментарий

Категории:

  • CSS (121)
  • PHP (301)
  • JavaScript (704)

Оставить на заметку в:

© 2026 RuKoder.ru