GRASP Principles

General Responsibility Assignment Software Patterns (Larman).

Table of Contents

  • Information Expert: Assign responsibility to the class with the information.
  • Creator: Who creates A? Container of A, recorder of A, user of A.
  • Controller: Entry point for a system operation (Facade/Use Case controller).
  • Low Coupling: Minimizing dependencies/impact of change.
  • High Cohesion: Keeping responsibilities focused and manageable.
  • Polymorphism: Handling handling alternatives based on type.
  • Pure Fabrication: Artificial class to maintain cohesion/coupling (e.g., Service).
  • Indirection: Intermediate object to decouple components.
  • Protected Variations: Wrapper around instability/variation points.