Архитектура. Что такое программная архитектура. Зачем нужна архитектура, страница 5

·  Конкретные механизмы расширения контура. Время от времени контуры должны рас ширяться, чтобы удовлетворять новым требованиям. Встроив в контур механизмы расширения или указав должный способ расширения, можно добиться, чтобы, раз виваясь, контур оставался универсальным и связным, а не превращался в мешанину кода. В контуре для Web-приложений, который мы рассматривали выше, механизм расширения должен учитывать добавление в будущем новых способов подключения к Internet, например, беспроводных.

Шаблоны

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

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

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

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

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

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

Шаблоны проектирования, как правило, подразделяются на три широких категории.

·  Шаблоны создания (creational). Шаблоны создания содержат решения проблем конфигурирования и инициализации. К таким шаблонам относится, например, шаблон Singleton("единственный"), который ограничивает класс единственным экземпляром.

·  Шаблоны структуры (structural). Шаблоны структуры определенным образом структурируют интерфейсы и отношения между классами. К шаблонам структуры относится шаблон Proxy, который рассматривается ниже в данном разделе.

·  Шаблоны поведения (behavioral). Шаблоны поведения устанавливают способы взаимодействия между классами одной группы, которыми достигается определенное поведение. Примером шаблона поведения может служить шаблон Observer, рассматриваемый ниже в данном разделе.

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

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

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

Далее мы будем упоминать некоторые существующие и новые шаблоны для разработки HaJ2EE, применяемые в главах, посвященных технологии J2EE.