Home - nikitachebotarev/docs GitHub Wiki

GRASP

  • Information expert (Using the principle of information expert, a general approach to assigning responsibilities is to look at a given responsibility, determine the information needed to fulfill it, and then determine where that information is stored.)
  • Creator (In general, Assign class B the responsibility to create object A if one, or preferably more, of the following apply: Instances of B contain or compositely aggregate instances of A Instances of B record instances of A Instances of B closely use instances of A Instances of B have the initializing information for instances of A and pass it on creation.)
  • Controller (The controller pattern assigns the responsibility of dealing with system events to a non-UI class that represents the overall system or a use case scenario. A controller object is a non-user interface object responsible for receiving or handling a system event.)
  • Inderection (The indirection pattern supports low coupling and reuses potential between two elements by assigning the responsibility of mediation between them to an intermediate object.)
  • Low coupling (lower dependency between the classes, change in one class having a lower impact on other classes, higher reuse potential.)
  • High cohesion (High cohesion is an evaluative pattern that attempts to keep objects appropriately focused, manageable and understandable.)
  • Polymorphism (The user of the type should use polymorphic operations instead of explicit branching based on type.)
  • Protected variations ( Identify points of predicted variation or instability;)
  • Pure fabrication (A pure fabrication is a class that does not represent a concept in the problem domain, specially made up to achieve low coupling, high cohesion.)