Что такое 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.