Вместо этого используем шаблонные методы




Данный шаблон позволяет реализовать частичное повторное использование кода. Это часто применимо к нескольким алгоритмам, которые слегка отличаются друг от друга.

Когда: Для устранения дублирования самым простым способом.

Почему: Существует дублирование и гибкость не является проблемой.

 

Но гибкость - это хорошо. Что если она мне действительно нужна?

Пришло время Стратегии

Когда: гибкость и повторное использование кода важнее, чем простота.

Зачем: используется для реализации больших, взаимозаменяемых частей сложной логики, входящей в какой-то общий алгоритм.

 

Например, можно создать общий Calculator, а затем использовать различные объекты ComputationStrategy для выполнения вычислений. Это часто используемый шаблон, и он становится очень мощным, когда нужно реализовать много разных условных поведений.

Открытие возможностей

По мере роста проекта, становится все сложнее получать доступ к приложению для внешних пользователей. Есть одна причина для предоставления хорошо-организованно точки входа в наше приложение или модуль. Другой причиной может послужить желание скрыть внутреннюю работу и структуру модуля.

Представляем Фасад

Фасад-это по сути API - приятный для стороне клиента интерфейс. Когда клиент вызывает любой из методов фасада, то фасад делегирует их выполнение классам, которые находятся за ним.

Когда: Чтобы упростить ваш API или намеренно скрыть внутреннюю бизнес-логику.

Зачем: вы сможете независимо друг от друга контролировать API и реальную реализацию логики.

 

Контроль - это хорошо, и очень часто бывает так, что вам нужно выполнить какую-то задачу, когда что-либо в системе поменялось. Пользователи должны быть уведомлены, красные светодиоды должны мигать, сигнал тревоги должен издавать звук... ну вы поняли идею.

Популярный фреймворк Laravel прекрасно использует шаблон Фасад.

Подписаться на наблюдателя

Null объект реализует тот же самый интерфейс, что и ваши объекты.

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

  • Polling - объекты принимают подписчиков. Подписчики наблюдают за объектом и будут уведомлены о наступлении определенных событий. Подписчики запрашивают у наблюдаемых объектов необходимую информацию.
  • Push - так же как метод опроса, объекты принимают подписчиков, а подписчики уведомляются при возникновении события. Но когда происходит уведомление, наблюдатель так же получает сигнал что, он может действовать.

Когда: для реализации системы уведомлений внутри вашей бизнес логики во внешний мир.

Зачем: шаблон предлагает способ сообщить событие любому количеству различных объектов.

 

Примерами использования этого шаблона являются: почтовые уведомления, демоны записи с логи или системы сообщений. И конечно же в реальной жизни есть бессчетное количество других способов применения этого шаблона.

Координируем эффекты

Шаблон наблюдатель может быть расширен шаблоном медиатор. Этот шаблон принимает два объекта в качестве параметров. Медиатор подписывает себя на первый параметр, и когда в наблюдаемом объекте происходит какое-то изменение, то медиатор решает, что делать со вторым объектом.

Когда: Изменяемые объекты не должны знать о наблюдаемых объектах.

Зачем: чтобы предоставить спрятанный механизм взаимодействия между объектами в системе, когда один из них меняется.

Оригинальность

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

Используем синглтон

Синглтон - это объект, у которого конструктор является приватным и есть вместо него публичный метод getInstance(). С помощью этого метода мы добиваемся того, что во всем приложении будет существовать только один инстанс (экземпляр, случай, этап) этого объекта.

Когда: Вам нужно достичь оригинальности и вам нужно кросс-платформенное, решение, которое также предлагает возможность создания путем наследования.

Зачем: для предоставления единственной точки входа, когда необходимо.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-11-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: