GRASP (General Responsibility Assignment Software Patterns) is a design pattern in object-oriented software development used to assign responsibilities for different modules of code.
As a tool for software developers, GRASP provides a means to solve organizational problems and offers a common way to speak about abstract concepts. The design pattern sets responsibilities for objects and classes in object-oriented program design.
GRASP with object-oriented programming classifies problems and their solutions together as patterns. With these problems and solutions well defined, they can be applied in other similar instances. GRASP assigns seven types of roles to classes and objects in order to make for clear delineation of responsibilities. These roles are:
- Information Expert
- High Cohesion
- Low Coupling
- Protected Classes
GRASP is occasionally coupled with other design patterns such as SOLID. This combination makes for the convincing moniker of SOLID GRASP. Design patterns such as these help keep code simpler, more organized, more comprehensible, analyzable and reusable.