Шаблоны проектирования — это конструкции кода, независимо от языка программирования, которые предлагают решения часто возникающих проблем, возникающих при разработке программного обеспечения.

Его также можно рассматривать как спецификацию или шаблон для решения повторяющихся проблем, которые могут быть реализованы несколькими способами в зависимости от ситуации.

Почему мы должны использовать шаблоны проектирования?

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

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

Категории шаблонов проектирования

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

Шаблоны креативного дизайна

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

На основе класса

Фабричный метод. Создайте экземпляр нескольких производных классов с учетом информации об интерфейсе.

Объектно

Абстрактная фабрика: создает экземпляры из различных категорий классов без описания конкретной реализации.

Builder: помогает создавать объекты того же типа, отделяя процесс их создания от их представления.

Прототип: копирование или клонирование полностью инициализированного экземпляра.

Singleton: для создания класса, который будет иметь только один экземпляр.

Шаблоны структурного проектирования

Эти шаблоны проектирования имеют дело с композицией классов и объектов. Он использует наследование для создания интерфейсов и методов для добавления новых функций.

На основе класса

Адаптер: служит связующим звеном между классами, имеющими несовместимые интерфейсы.

Объектно

Адаптер: Соединитель, основанный на упомянутом выше классе.

Декоратор: динамическое обновление функциональности объекта.

Составной: объединение нескольких объектов для расширения его возможностей.

Мост: он изолирует интерфейс объекта от его реализации, чтобы способствовать отделению.

Фасад: класс, который скрывает детали основных подсистем и предлагает минимальное публичное раскрытие.

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

Flyweight : экземпляр, созданный для обмена информацией, хранящейся в другом месте.

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

Эти шаблоны предлагают решения для удобного взаимодействия между классами или объектами. Он основан на том, как вещи действуют вместе.

На основе класса

Шаблон. Создайте шаблон для последовательности шагов в методе и делегируйте конкретный шаг подклассу.

Интерпретатор: предоставляет средства для включения определенной языковой грамматики в программу и ее обработки.

Объектно

Команда . Инкапсуляция командных запросов, таких как регистрация и постановка в очередь запросов, в виде объекта. Также обеспечивает обработку ошибок для необработанных запросов.

Memento: создание моментального снимка внутреннего состояния объекта для использования в будущем.

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

Итератор: доступ к коллекции, не зная ее деталей.

Посетитель: определяет новую операцию для класса, не изменяя ее.

Состояние: изменение поведения объекта в зависимости от его состояния.

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

Цепочка ответственности: передача некоторого запроса через цепочку объектов соответствующему объекту для его обработки.

Стратегия: инкапсулируйте алгоритмы в класс, изолируя выбор и реализацию.

Что такое антипаттерн?

Анти-шаблоны — это аналоги шаблонов проектирования, которые описывают часто встречающиеся решения проблемы, часто имеющие негативные последствия и крайне контрпродуктивные. Хотя изначально это кажется подходящим и эффективным решением проблемы, оно имеет относительно больше отрицательных последствий, чем положительных.