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