🧩 GRASP: кому какую обязанность назначить? Каждое проектное решение — «куда положить метод», «кто создаёт объект», «кто реагирует на событие» — это решение о назначении обязанности. Крейг Ларман в Applying UML and Patterns (1997) предложил девять эвристик, каждая сформулирована как вопрос проектировщика. Пять базовых паттернов закрывают повседневные решения: Information Expert — обязанность тому, кто владеет данными; Creator — создаёт тот, кто агрегирует; Controller — системное событие принимает не-класс интерфейса. Ещё четыре работают с вариативностью: Polymorphism вместо ветвлений, Pure Fabrication — искусственный класс вроде репозитория, Indirection — посредник, Protected Variations — стабильный интерфейс вокруг изменчивого. GRASP старше SOLID и лежит под паттернами GoF: Фасад — это Controller и Pure Fabrication, Адаптер — Indirection, Стратегия — Polymorphism. Один словарь обслуживает три уровня — код, компоненты, архитектуру. 🔗 GRASP: https://agaltsovav.ru/docs/architecture/grasp/