====== General Responsibility Assignment Software Patterns (GRASP) ====== Craig Larman describes how to assign responsibilities to classes using the following principles and patterns: * [[principles:Controller]] * [[principles:Creator]] * [[principles:High Cohesion]] * [[patterns:Indirection]] * [[principles:Information Expert]] * [[principles:Low Coupling]] * [[patterns:Abstract Coupling|Polymorphism]] * [[patterns:Protected Variations]] * [[pattern:Pure Fabrication]] He calls GRASP "patterns of general principles in assigning responsibilities"((Craig Larman: //[[resources:Applying UML and Patterns|Applying UML and Patterns – An Introduction to Object-Oriented Analysis and Design and Iterative Development]]// p. 219)). Some of these are really patterns but others are principles. ===== Origin ===== * {{page>resources:Applying UML and Patterns#reference}} ===== Further Reading ===== * [[wp>GRASP (object-oriented design)]] ===== Box ===== ^ **[[collections:GRASP]]** ^^^^^^ ^ Principles| [[principles:Information Expert]] | [[principles:High Cohesion]] | [[principles:Low Coupling]] | [[principles:Creator]] | [[principles:Controller]] | ^ Patterns | [[patterns:Indirection]] | [[patterns:Abstract Coupling|Polymorphism]] | [[patterns:Protected Variations]] | [[patterns:Pure Fabrication]] | ===== Discussion ===== Discuss this wiki article and the collection on the corresponding [[talk:collections:GRASP|talk page]].