ФЭНДОМ



Введение Править

Шаблоны проектирования GRASP — набор из 9-ти фундаментальных шаблонов проектирования, составляющих основу проектирования на основе обязанностей (англ. Responsibilities-Driven-Design, RDD).

Различают 9 фундаментальных шаблонов (принципов) проектирования:

Наименование шаблона
Creator
Information Expert
Low Coupling
Controller
High Cohesion
Polymorphism
Pure Fabrication
Indirection
Protected Variations

Шаблон Creator Править

Проблема: Кто отвечает за создание нового экземпляра некоторого класса A?

Решение: Назначить классу B обязанность создавать экземпляры класса A, если выполняется одно (или несколько) из следующих условий.

  • Класс B содержит (contains) или агрегирует (aggregate) объекты A.
  • Класс B записывает (records) экземпляры объектов A.
  • Класс B активно использует (closely uses) объекты A
  • Класс B обладает данными инициализации (has the initializing data) для объектов A.

Шаблон Information Expert Править

Проблема: Каков базовый принцип распределения обязанностей между объектами?

Решение: Назначить эту обязанность тому классу, который обладает достаточной информацией для ее выполнения.

Шаблон Low Coupling Править

Проблема: Как уменьшить влияние вносимых изменений на другие объекты?

Решение: Минимизировать степень связывания в процессе распределения обязанностей. Этот принцип используется для оценки различных альтернатив.

Шаблон Controller Править

Проблема: Кто должен отвечать за получение и координацию выполнения системных операций, поступающих от уровня интерфейса пользователей?

Решение: Присвоить эту обязанность классу, удовлетворяющему одному из следующих условий.

  • Класс представляет всю систему в целом, корневой объект, устройство или важную подсистему (внешний контроллер).
  • Класс представляет сценарий некоторого прецендента, в рамках которого выполняется обрабока этой системной операции (контроллер прецендента или контроллер сеанса).

Шаблон High Cohesion Править

Проблема: Как обеспечить сфокусированность обязанностей объектов, их управляемость и ясность, а заодно выполнение принципа Low Coupling?

Решение: Обеспечивать высокий уровень зацепления в процессе распределения обязанностей. Этот принцип нужно использовать для оценки различных альтернатив.

Шаблон Polymorphism Править

Проблема: Как обрабатывать альтернативные варианты поведения на основе типа? Как заменять подключаемые компоненты системы?

Решение: Обязанности распределяются для различных вариантов поведения с помощью полиморфных операций для этого класса. Каждая внешняя система имеет свой интерфейс.

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

Использование полиморфизма оправдано для адаптации к различным внешним системам.

Шаблон Pure Fabrication Править

Шаблон Indirection Править

Шаблон Protected Variations Править

Источники Править

  • Крэг Ларман Применение UML 2.0 и шаблонов проектирования = Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and Iterative Development. — 3-е изд. — М.: «Вильямс», 2006. — ISBN 0-13-148906-2
(главы 17 и 25)

Ссылки Править

Обнаружено использование расширения AdBlock.


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

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

Также на ФЭНДОМЕ

Случайная вики