Схема проектирования

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

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

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

Элементами этого языка являются объекты, называемые шаблонами. Каждый шаблон описывает проблему, которая возникает снова и снова в нашей среде, а затем описывает ядро ​​решения этой проблемы таким образом, что вы можете использовать это решение в миллион раз, не выполняя его дважды , — Кристофер Александр

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

Документация к образцу также должна разъяснять, когда это применимо. Поскольку два дома могут сильно отличаться друг от друга, шаблон дизайна для домов должен быть достаточно широким, чтобы применяться к ним обоим, но не настолько расплывчатым, что это не помогает дизайнеру принимать решения. Диапазон ситуаций, в которых шаблон может использоваться, называется его контекстом. Некоторыми примерами могут быть «все дома», «все двухэтажные дома» или «все места, где люди проводят время».

Например, в работе Кристофера Александра автобусные остановки и залы ожидания в хирургическом центре находятся в контексте шаблона «МЕСТО ДЛЯ ЖДЕНИЯ».

Классы шаблонов проектирования
Книга Quadrole Gang’s Design Patterns (ISBN 0-201-63361-2) различает три шаблона дизайна, но нет четкого критерия, который отделяет их друг от друга.

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

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

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

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

Заводской метод
Наследуя то, как объект создает его под единственным интерфейсом, используемым для создания объекта, он оставляет функции создания объекта в интерфейсе, оставив его в подклассах.

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

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

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

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

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

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

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

Фасад (фасад)
Это позволяет использовать сложную структуру в одном интерфейсе.

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

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

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

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

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

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

Поведенческие паттерны также делятся на два, как и в структурных шаблонах: шаблоны поведения классов и шаблоны поведения объектов.

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

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

Государственный шаблон
Это позволяет объекту изменять свое поведение в соответствии с его ситуацией. С точки зрения пользователя создается впечатление, что вы изменяете класс объекта. Это позволяет добавлять и удалять новые формы поведения в направлении, требуемом приложением. Такие изменения не затрагивают объекты-пользователи.

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

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

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

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

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

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

Итератор
Это гарантирует, что объекты, расположенные под массовым объектом (объект Aggragate), могут быть достигнуты последовательно, независимо от того, как объекты представлены или реализованы. Объекты, представленные таким образом, могут быть доступны через один интерфейс.

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

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