GRASP (объектно-ориентированный дизайн)

редактировать
Рекомендации по объектно-ориентированному дизайну

Шаблоны программного обеспечения общего назначения ответственности (или Принципы ), сокращенно GRASP, состоят из руководящих указаний по назначению ответственности классам и объектам в объектно-ориентированном дизайне. Это не связано с принципом конструкции SOLID.

Различные шаблоны и принципы, используемые в GRASP: контролер, создатель, косвенное обращение, эксперт по информации, низкая связь, высокая связность, полиморфизм, защищенные вариации и чистое изготовление. Все эти шаблоны решают некоторые программные проблемы, и эти проблемы являются общими почти для всех программных проектов. Эти методы были изобретены не для создания новых способов работы, а для лучшего документирования и стандартизации старых, испытанных принципов программирования в объектно-ориентированном дизайне.

Компьютерный ученый Крейг Ларман утверждает, что «важнейшим инструментом проектирования для разработки программного обеспечения является ум, хорошо образованный в принципах проектирования. Это не UML или какая-либо другая технология. " Таким образом, GRASP на самом деле представляет собой набор инструментов для ума, учебное пособие, помогающее в разработке объектно-ориентированного программного обеспечения.

Содержание
  • 1 Паттерны
    • 1.1 Информационный эксперт
    • 1.2 Создатель
    • 1.3 Контроллер
    • 1.4 Косвенное направление
    • 1.5 Низкая связь
    • 1.6 Высокая когезия
    • 1.7 Полиморфизм
    • 1.8 Защищенные варианты
    • 1.9 Чистое изготовление
  • 2 См. Также
  • 3 Примечания
  • 4 Ссылки
Шаблоны

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

Информационный эксперт

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

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

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

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

Связанный образец или принцип : низкая взаимосвязь, высокая сплоченность

Создатель

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

Проблема: Кто создает объект A?. Решение: Как правило, назначьте классу Bответственность за создание объекта A, если один или, желательно, несколько из применяется следующее:

  • Экземпляры Bсодержат или совокупно объединяют экземпляры A
  • Экземпляры Bзаписывают экземпляры A
  • Экземпляры Bблизко используйте экземпляры A
  • . Экземпляры Bимеют инициализирующую информацию для экземпляров Aи передают ее при создании.

Связанный шаблон или принцип : низкая связь, Заводской шаблон

Контроллер

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

Проблема: кто должен отвечать за обработку события системы ввода?. Решение: контроллер варианта использования должен использоваться для обработки всех системных событий варианта использования, и его можно использовать более чем для одного вариант использования. Например, для вариантов использования «Создать пользователя» и «Удалить пользователя» можно использовать один класс с именем UserController вместо двух отдельных контроллеров вариантов использования.

Контроллер определяется как первый объект за пределами уровня пользовательского интерфейса, который принимает и координирует («управляет») системную операцию. Контроллер должен делегировать работу, которая должна быть сделана, другим объектам; он координирует или контролирует деятельность. Сам он не должен делать много работы. Контроллер GRASP можно рассматривать как часть уровня приложения / сервиса (при условии, что приложение явно различает уровень приложения / сервиса и уровень домена ) в объектно-ориентированной системе. с общими слоями в логической архитектуре информационной системы.

Связанный шаблон или принцип : Command, Facade, Layers, Pure Fabrication

Indirection

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

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

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

Посредник создает косвенное обращение между другими компонентами.

Низкая связь

Связь - это мера того, насколько сильно один элемент связан с другими элементами, знает о них или полагается на них. Низкая связь - это оценочный паттерн, который диктует, как распределять обязанности за следующие преимущества:

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

Высокая сплоченность

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

Полиморфизм

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

Проблема: как обрабатывать альтернативы в зависимости от типа? Как создать подключаемые программные компоненты?. Решение: Когда связанные альтернативы или поведения различаются по типу (классу), возложите ответственность за поведение - используя полиморфные операции - на типы, для которых это поведение различается (полиморфизм имеет несколько связанных значений. В данном контексте это означает «присвоение одного и того же имени сервисам в разных объектах»)

Защищенные варианты

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

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

Чистое изготовление

A чистое изготовление - это класс, который не представляет концепцию в проблемной области, специально созданный для достижения низкой связи, высокой когезии и полученного потенциала повторного использования (когда решение, представленное информационным шаблоном эксперта, нет). Этот вид класса называется «службой» в доменно-ориентированном проектировании.

Связанные шаблоны и принципы • Низкое сцепление. • Высокая сплоченность.

См. Также
Примечания
Ссылки
Последняя правка сделана 2021-05-21 09:21:31
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте