GRASP ( anglicky general zodpovědných přiřazovacích softwarových vzorů - obecné vzorce rozdělení odpovědností; existuje také anglické slovo "grasp" - "kontrola, uchopit" ) - vzory používané v objektově orientovaném designu k řešení obecných úkolů přidělování odpovědností třídám a předměty .
Kniha Craiga Larmana Applying UML and Design Patterns [ 1] popisuje 9 takových vzorů: každý pomáhá vyřešit nějaký problém, který vzniká jak v objektově orientované analýze , tak v téměř jakémkoli projektu vývoje softwaru . Vzory „GRASP“ jsou tedy dobře zdokumentované, standardizované a časem prověřené principy objektově orientované analýzy a nejedná se o pokus přinést něco zásadně nového.
Stručný popis devíti vzorů:
Šablona definuje základní princip rozdělení odpovědnosti:
Odpovědnost by měl nést ten, kdo vlastní maximum informací potřebných k provedení – informační expert .
Tento vzorec je nejzřetelnější a nejdůležitější z devíti. Pokud to nezohledníte, dostanete špagetový kód , kterému je těžké porozumět.
Lokalizace odpovědností, prováděná podle šablony:
Problém: Kdo je zodpovědný za vytvoření objektu nějaké třídy A?
Řešení: Dejte třídě B odpovědnost za vytváření objektů třídy A, pokud třída B:
Můžeme říci, že vzor " Creator " je interpretací vzoru " Information Expert " (viz bod č. 1) v kontextu vytváření objektů.
Většina generativních návrhových vzorů je tak či onak odvozena od vzoru „ Tvůrce “ nebo na něm spoléhá .
„ Stupeň zapojení“ je mírou kontinuity prvku s jinými prvky (nebo mírou údajů, které o nich má).
„ Slabé“ zapojení je model hodnocení, který určuje, jak přidělit odpovědnosti, které je třeba zachovat.
" Slabé" propojení - rozdělení odpovědností a dat, zajištění vzájemné nezávislosti tříd. Třída se „slabým“ propojením:
Vysokotřídní soudržnost je hodnotový model, jehož cílem je udržovat objekty správně zaměřené, ovladatelné a srozumitelné. Vysoká soudržnost se obecně používá k udržení nízkého zapojení. Vysoká konektivita znamená, že povinnosti prvku spolu úzce souvisejí a jsou zaměřeny. Rozdělení programů do tříd a subsystémů je příkladem činnosti, která zvyšuje koherenci systému.
Naopak nízká konektivita je, když má daný prvek příliš mnoho nesouvisejících povinností. Prvky s nízkou konektivitou často trpí tím, že je obtížné je pochopit, používat a udržovat.
Soudržnost třídy je měřítkem zaměření předmětových oblastí jejích metod:
Zařízení a chování systému:
Příklad: Adaptaci komerčního systému na různé systémy daňového účetnictví lze zajistit prostřednictvím externího rozhraní objektů adaptéru (viz také: Šablona " Adaptéry ").
Není to specifické pro předmětnou oblast , ale:
" Pure Fabrication " odráží koncept služeb v doménově specifickém designovém modelu .
Příklad úlohy: Bez použití prostředků třídy "A" přidejte její objekty do databáze .
Řešení: Vytvořte třídu "B" pro záznam objektů třídy "A" (viz také: " Data Access Object ").
Slabé zapojení prvků systému (a možnost opětovného použití) je zajištěno určením meziobjektu jako jejich prostředníka .
Příklad: V architektuře Model-View-Controller regulátor ( angl. controller) oslabuje zapojení dat (eng. model) s jejich prezentací (eng. view) .
Šablona chrání prvky před změnou jinými prvky (objekty nebo subsystémy) tím, že z interakce dělá pevné rozhraní , přes které (a pouze přes které) je možná interakce mezi prvky. Chování lze změnit pouze vytvořením jiné implementace rozhraní.