|
| 1 | += GRASP |
| 2 | +:categories: design-principles |
| 3 | +:roles: software-developer, software-architect, educator, consultant |
| 4 | +:related: solid-principles, gof-design-patterns, clean-architecture, domain-driven-design |
| 5 | +:proponents: Craig Larman |
| 6 | +:tags: grasp, oop, responsibility-assignment, object-oriented-design, patterns |
| 7 | +:tier: 3 |
| 8 | + |
| 9 | +[%collapsible] |
| 10 | +==== |
| 11 | +Vollständiger Name:: General Responsibility Assignment Software Patterns (oder Principles) |
| 12 | + |
| 13 | +Auch bekannt als:: GRASP-Muster, Richtlinien für verantwortungsgetriebenes Design |
| 14 | + |
| 15 | +[discrete] |
| 16 | +== *Kernkonzepte*: |
| 17 | + |
| 18 | +Information Expert:: Weise die Verantwortung der Klasse zu, die die benötigten Informationen besitzt |
| 19 | + |
| 20 | +Creator:: Weise die Verantwortung für die Erzeugung eines Objekts der Klasse zu, die es aggregiert, enthält oder eng damit zusammenarbeitet |
| 21 | + |
| 22 | +Controller:: Weise die Verantwortung für die Behandlung von Systemereignissen einer Nicht-UI-Klasse zu, die das Gesamtsystem oder einen Anwendungsfall repräsentiert |
| 23 | + |
| 24 | +Low Coupling (Geringe Kopplung):: Weise Verantwortlichkeiten so zu, dass Abhängigkeiten zwischen Klassen minimiert werden, um Wiederverwendung zu steigern und Änderungsauswirkungen zu reduzieren |
| 25 | + |
| 26 | +High Cohesion (Hohe Kohäsion):: Weise Verantwortlichkeiten so zu, dass Klassen fokussiert, verständlich und überschaubar bleiben |
| 27 | + |
| 28 | +Polymorphismus:: Nutze polymorphe Operationen, um typbasierte Verhaltensvarianten zu behandeln, anstatt Bedingungsanweisungen zu verwenden |
| 29 | + |
| 30 | +Pure Fabrication:: Weise einer künstlichen Klasse, die kein Domänenkonzept repräsentiert, Verantwortlichkeiten zu, um geringe Kopplung und hohe Kohäsion zu erreichen |
| 31 | + |
| 32 | +Indirektion:: Weise einem Zwischenobjekt die Verantwortung zu, zwischen anderen Komponenten zu vermitteln, um direkte Kopplung zu reduzieren |
| 33 | + |
| 34 | +Protected Variations (Geschützte Variationen):: Identifiziere vorhergesagte Variationspunkte und weise Verantwortlichkeiten zu, um eine stabile Schnittstelle darum herum zu schaffen |
| 35 | + |
| 36 | + |
| 37 | +Schlüsselvertreter:: Craig Larman ("Applying UML and Patterns", 3. Aufl., 2004) |
| 38 | + |
| 39 | +[discrete] |
| 40 | +== *Wann zu verwenden*: |
| 41 | + |
| 42 | +* Entwurf objektorientierter Systeme und Entscheidung über die Zuweisung von Verantwortlichkeiten |
| 43 | +* Verbesserung von Kohäsion und Reduzierung von Kopplung in bestehenden Codebasen |
| 44 | +* Führung von Refactoring-Entscheidungen durch Bewertung aktueller Verantwortlichkeitszuweisungen |
| 45 | +* Vermittlung grundlegender objektorientierter Entwurfsprinzipien |
| 46 | + |
| 47 | +[discrete] |
| 48 | +== *Verwandte Anker*: |
| 49 | + |
| 50 | +* <<solid-principles,SOLID Principles>> - Ergänzende OO-Entwurfsprinzipien für wartbare Systeme |
| 51 | +* <<gof-design-patterns,GoF Design Patterns>> - Muster, die häufig GRASP-Prinzipien verkörpern |
| 52 | +* <<clean-architecture,Clean Architecture>> - Architekturstil, der GRASP-basiertes Denken nutzt |
| 53 | +* <<domain-driven-design,Domain-Driven Design>> - Nutzt Verantwortlichkeitszuweisung im Domänenmodell |
| 54 | +==== |
0 commit comments