Программирование на основе шаблонов (паттернов). Роль шаблонов проектирования в борьбе со сложностью программного обеспечения. Будущее шаблонов

В ОО технологии проектирования шаблоном называют именованное описание проблемы и ее решение, которые можно применить при разработке других систем. В идеале, шаблон должен содержать советы по поводу его применения в различных ситуациях, а так же описание его преимуществ и недостатков. Шаблон можно назвать новым, если он описывает новую идею. Однако сам термин “шаблон” означает стандартную, повторяющуюся сущность. Шаблоны не предназначены для изучения и выражения новых принципов разработки ПО. Скорее наоборот. Они призваны систематизировать существующие знания, идиомы и принципы. Шаблонам даны имена, чтобы облегчить специалистам их обсуждение. Существует две большие группы шаблонов: GRASP и GoF. GRASP – General Responsibility Assign Patterns:

· Information Expert – информационный эксперт;

· Creator – создатель;

· High Cohesion – высокое зацепление;

· Low Coupling – низкая связанность;

· Controller – контроллер;

На примере рассмотрим несколько GRASP - шаблонов.

Информационный эксперт: Задача. Каков наиболее общий принцип распределения обязанностей между объектами? Решение. Назначить обязанность информационному эксперту – классу у которого имеется вся информация для выполнения обязанности.

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

Создатель: определяет способ распределения обязанностей, связанный с процессом создания объектов. Проблема. Кто отвечает за создание нового экземпляра класса? Решение.Назначить обязанность по созданию экземпляра класса B классу A, если: 1). А агрегирует В или 2). А содержит В или 3). А записывает экземпляры В или 4). А содержит данные инициализации В или 5). А активно использует В

 

 

 
 

 


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

Контроллер. Задача. Кто должен отвечать за обработку входных системных событий? Решение.Делегировать обязанности по обработке системных сообщений классу, удовлетворяющему одному из следующих условий: 1). класс представляет всю систему в целом, устройство или подсистему (внешний контроллер); 2). класс представляет сценарий некоторого прецедента, в рамках которого выполняется обработка всех системных событий.

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