GRASP
GRASP (General Responsibility Assignment Software Patterns) - шаблони проектування, які використовують для вирішення загальних завдань із призначення обов'язків класам і об'єктам.
Відомо дев'ять GRASP шаблонів, спочатку описаних у книжці Крейга Лармана "Застосування UML і шаблонів проєктування". На відміну від звичних читачеві патернів із Банди Чотирьох, GRASP патерни не мають вираженої структури, чіткої сфери застосування і конкретної розв'язуваної проблеми, а лише є узагальненими підходами/рекомендаціями/принципами, які використовують під час проєктування дизайну системи.
Розглянемо характеристики основних GRASP шаблонів.
Творець (Creator)
Шаблон Creator говорить нам, яких умов треба дотриматися, щоб об'єкти правильно породжували один одного. Для цього є кілька правил.
Об'єкт А має породжувати об'єкт Б, якщо:
- об'єкт А містить або агрегує об'єкти Б (містить у собі як властивість або колекцію)
- об'єкт А активно використовує об'єкти Б (основний обсяг роботи з об'єктом Б відбувається за допомогою об'єкта А)
- об'єкт А володіє даними ініціалізації об'єкта Б (щоразу при створенні об'єкта Б, дані беруться з об'єкта А)
Інформаційний експерт (Information Expert)
Інформаційний експерт, як випливає з назви, займається не чим іншим, як наданням інформації про об'єкт.