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

Опубликовано: 1 Сентября, 2022

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

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

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

Наиболее влиятельная работа над шаблонами проектирования была проделана Гаммой, Хелмом, Джонсоном и Влиссидесом, широко известным как Группа четырех (GOF). Шаблон проектирования GoF можно описать как взаимодействие между классами и объектами, настроенными для решения проблемы проектирования в конкретном контексте.

Существенный элемент шаблона проектирования:

Существует четыре основных элемента шаблона проектирования. Они следующие:

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

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

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

  • Абстрактная фабрика: указывает, какая фабрика должна быть создана, предоставляет интерфейс для создания семейств объектов (связанных/зависимых) без какой-либо спецификации их конкретных классов.
  • Адаптер: Id Адаптирует или преобразует интерфейс класса в другой в соответствии с ожиданиями клиента и, следовательно, преодолевает проблему несовместимых интерфейсов, тем самым позволяя классам работать вместе.
  • Мост: он отделяет абстракцию от ее реализации, чтобы сделать их независимыми.
  • Builder: он отделяет конструкции сложных объектов от их представления, чтобы создавать разные представления с одним и тем же процессом построения.
  • Цепочка ответственности: позволяет обрабатывать объекты команд, передавая их другим объектам, используя логику, присутствующую в обработке объектов. Другими словами, он разделяет отправителя и получателя, форматируя цепочку принимающих объектов для передачи запроса до тех пор, пока запрос не будет обработан объектом.
  • Команда: он инкапсулирует действие и его параметры и, следовательно, позволяет параметризовать различные запросы клиентов, такие как длинные запросы или запросы очереди. Это также помогает невыполнимым операциям.
  • Составной: представляет объекты в древовидной структуре, где каждый объект представляет один и тот же интерфейс. Это позволяет клиентам единообразно обрабатывать отдельные объекты и их композиции.
  • Декоратор: добавляет классу дополнительную функциональность во время выполнения. Это обеспечивает гибкость для подкласса для добавления функциональности.
  • Фасад: создает упрощенный/унифицированный интерфейс существующих интерфейсов в подсистемах, чтобы легко справляться с общими задачами.
  • Фабричный метод: фокусируется на создании объектов конкретной реализации. позволяет подклассу решать, какой класс создавать.
  • Легковес: выполняет совместное использование общих свойств объектов большим количеством объектов для экономии места.
  • Интерпретатор: имеет дело с реализацией определенного компьютерного языка, который решает определенные проблемы. Он интерпретирует предложения на языке, представляя грамматику языка вместе с переводчиком.
  • Итератор: включает последовательные элементы агрегатных объектов, скрывая их базовые представления.
  • Медиатор: обеспечивает унифицированный интерфейс для набора интерфейсов в подсистеме. Он обеспечивает слабую связь, которая позволяет объектам явно ссылаться на каждый из них, а также независимо изменяет взаимодействие объектов.
  • Momento: он поддерживает механизм отката, позволяя объектам восстанавливать свое предыдущее состояние без нарушения инкапсуляции.
  • Наблюдатель: Всякий раз, когда объект меняет свое состояние, он вызывает событие, которое уведомляет другие объекты и автоматически обновляет их. Это определяет зависимость «один ко многим» между объектами.
  • Прототип: Здесь прототипный экземпляр определяет тип создаваемых объектов. Дальнейшие новые объекты создаются путем клонирования этого прототипа.
  • прокси: создает иллюзию, применяя заполнитель к другим объектам, чтобы иметь над ним контроль.
  • Синглтон: предоставляет ограничения на создание экземпляра класса для одного объекта, а также делает его глобально доступным.
  • Состояние: Разрешает изменение поведения объекта с изменением его состояния, т.е. позволяет изменять тип объекта во время выполнения.
  • Посетители: Описывает скелет программы, позволяет подклассам определять некоторые шаги алгоритма, а также переопределять определенные шаги, не затрагивая структуру алгоритма.
  • Стратегия: определяет семейство алгоритмов и их выбор на основе клиентов.

Использование шаблонов проектирования в программной инженерии:

Шаблон проектирования в контексте разработки программного обеспечения — это шаблон или многократно используемое решение общих проблем, возникающих при разработке программного обеспечения. Обычно это представлено классами и объектами, интерфейсами и т. д. Одним из приложений шаблона проектирования является «повторное использование решений». .

Необходимость шаблона дизайна:

  • Обеспечивает эффективную связь между дизайнерами.
  • Решает проблему, просто ссылаясь на имя шаблона.
  • Улучшает читаемость кода для программистов.
  • Сократите время на поиск решения, повторно используя проверенные и проверенные парадигмы разработки.
  • Сократите время для кодеров.
  • Вводит дополнительные уровни косвенности для достижения гибкости.
  • Сокращение времени на понимание дизайна.
  • Избегайте тех альтернатив, которые избегают повторного использования, тем самым уменьшая вариации.
  • Улучшает понятность дизайна и документации.
  • Помогает легче и быстрее понять основы объектно-ориентированного проектирования.