GRASP
GRASP (General Responsibility Assignment Software Patterns (or Principles))
- Creator, en klasse skal oprette objekter, som den bruger, indeholder eller har tæt relation til.
- Controller, en klasse som håndterer systemhændelser og koordinerer mellem lag.
- Low coupling, en klasse bør have så få afhængigheder som muligt.
- High cohesion, en klasse bør have et klart og fokuseret ansvar.
- Indirection, indfører et mellemled for at reducere afhængigheder.
- Pure Fabrication, en kunstig klasse for at samle teknisk ansvar, som ikke hører naturligt til i domænet.
Der er lidt faglig diskussion om, hvorvidt det er principper eller mønstre. Larman konkluderer, at det er lidt ligemeget hvad vi kalder det, bare vi bruger det.
Controller, high cohesion, polymorphism og low coupling har vi arbejdet med ud af de 9 principper.
- High Cohesion: Metoderne i klasserne hænger sammen og er tæt relaterede, så man ikke har en ”gud”-klasse ("gud"-klasse, ejer det hele).
- Low coupling: lav klasser, sådan de ikke har særlig mange andre klasser der er afhængige af dem, nemmere vedligeholdelse, gør alting er adskilt.
- Controller: Minder meget om ViewModel, da den håndterer events og koordinerer operationer mellem UI-laget og Model laget.