PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Что такое GRASP?

Продвинутые темы

GRASP (General Responsibility Assignment Software Patterns) — это набор принципов для правильного распределения ответственностей между классами и объектами в объектно-ориентированном дизайне.

Основные принципы

  • Information Expert — ответственность отдают тому, у кого есть нужные данные.
  • Creator — кто создаёт объект (тот, кто его агрегирует/использует).
  • Controller — объект-координатор для обработки системных событий.
  • Low Coupling — минимизировать связанность между классами.
  • High Cohesion — держать связанные обязанности вместе (высокая связность внутри).
  • Polymorphism — вариативное поведение через полиморфизм, а не проверки типов.
  • Pure Fabrication — искусственный класс для снижения связанности (сервис, репозиторий).
  • Indirection — посредник для развязки объектов.
  • Protected Variations — защита от изменений через стабильные интерфейсы.

Зачем

GRASP помогает решить «кто за что отвечает», снижая связанность и повышая связность — основа поддерживаемого ООП-дизайна.

GRASP против SOLID

  • GRASP — как распределять ответственности.
  • SOLID — конкретные принципы проектирования классов.

Они дополняют друг друга.

Коротко для собеседования

GRASP — принципы распределения ответственностей в ООП: Information Expert (данные → ответственность), Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations. Помогают решить «кто за что отвечает», дополняя SOLID.

Другие вопросы раздела