GRASP – General Responsibility Assignment Software Patterns – sind neun Prinzipien, die Craig Larman in „Applying UML and Patterns“ beschreibt; sie helfen im objektorientierten Entwurf zu entscheiden, welche Klasse welche Verantwortung übernimmt. Es sind Information Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphismus, Pure Fabrication, Indirektion und Protected Variations. Gemeinsam angewandt halten sie Klassen fokussiert und lose gekoppelt.
GRASP
Details
- Vollständiger Name
-
General Responsibility Assignment Software Patterns (oder Principles)
- Auch bekannt als
-
GRASP-Muster, Richtlinien für verantwortungsgetriebenes Design
Kernkonzepte:
- Information Expert
-
Weise die Verantwortung der Klasse zu, die die benötigten Informationen besitzt
- Creator
-
Weise die Verantwortung für die Erzeugung eines Objekts der Klasse zu, die es aggregiert, enthält oder eng damit zusammenarbeitet
- Controller
-
Weise die Verantwortung für die Behandlung von Systemereignissen einer Nicht-UI-Klasse zu, die das Gesamtsystem oder einen Anwendungsfall repräsentiert
- Low Coupling (Geringe Kopplung)
-
Weise Verantwortlichkeiten so zu, dass Abhängigkeiten zwischen Klassen minimiert werden, um Wiederverwendung zu steigern und Änderungsauswirkungen zu reduzieren
- High Cohesion (Hohe Kohäsion)
-
Weise Verantwortlichkeiten so zu, dass Klassen fokussiert, verständlich und überschaubar bleiben
- Polymorphismus
-
Nutze polymorphe Operationen, um typbasierte Verhaltensvarianten zu behandeln, anstatt Bedingungsanweisungen zu verwenden
- Pure Fabrication
-
Weise einer künstlichen Klasse, die kein Domänenkonzept repräsentiert, Verantwortlichkeiten zu, um geringe Kopplung und hohe Kohäsion zu erreichen
- Indirektion
-
Weise einem Zwischenobjekt die Verantwortung zu, zwischen anderen Komponenten zu vermitteln, um direkte Kopplung zu reduzieren
- Protected Variations (Geschützte Variationen)
-
Identifiziere vorhergesagte Variationspunkte und weise Verantwortlichkeiten zu, um eine stabile Schnittstelle darum herum zu schaffen
- Schlüsselvertreter
-
Craig Larman ("Applying UML and Patterns", 3. Aufl., 2004)
Wann zu verwenden:
-
Entwurf objektorientierter Systeme und Entscheidung über die Zuweisung von Verantwortlichkeiten
-
Verbesserung von Kohäsion und Reduzierung von Kopplung in bestehenden Codebasen
-
Führung von Refactoring-Entscheidungen durch Bewertung aktueller Verantwortlichkeitszuweisungen
-
Vermittlung grundlegender objektorientierter Entwurfsprinzipien
Verwandte Anker:
-
SOLID Principles - Ergänzende OO-Entwurfsprinzipien für wartbare Systeme
-
GoF Design Patterns - Muster, die häufig GRASP-Prinzipien verkörpern
-
Clean Architecture - Architekturstil, der GRASP-basiertes Denken nutzt
-
Domain-Driven Design - Nutzt Verantwortlichkeitszuweisung im Domänenmodell