GRASP stands for general responsibility assignment software pattern. It is actually a low-level design pattern of assigning responsibilities, like reasons about design trade-offs when assigning methods and fields to classes.
GRASP is a learning aids to help one understand essential object design and apply design reasoning in a methodical, rational, explainable way. The design model is known as FAÇADE.
FAÇADE model has a central controller that:
Use a central controller to:
GRASP is a way to balance cohesion with coupling by identifying the creator of the concept.
The rules of assignment is that when B creates A, assign class responsibility of instance A to B when any (one or the more the better) of the following applies:
This promotes low coupling, high cohesion class creation that promotes evolvability (design for change).
However, sometimes, objects must be created in special ways due to: