GRASP stand for General Responsibility Assignment Software Principles. It is basically guides to developer for assigning responsibilities to collaborating objects based on following rules or Principles.
Responsibility can be accomplished by a single object or a group of object collaboratively accomplish a responsibility. GRASP helps us in deciding which responsibility should be assigned to which object/class and identify the objects and responsibilities from the problem domain, and also identify how objects interact with each other.It is define blue print for those objects i.e. class with methods implementing those responsibilities.
It is deals with how to delegate the request from the front-end (UI) layer objects to back- end (DB or business logic) layer objects. when a request comes from UI layer object, Controller pattern helps us in determining what is that first object that receive the message from the front-end layer objects. This object is called controller object which receives request from front end layer object and then controls/coordinates with other object of the back-end layer to fulfill the request. It delegates the work to other class and coordinates the overall activity.
Benefits