GRASP Pattern N
GRASP Pattern N
Outline
Introduction Information Expert Creator Low Coupling High Cohesion Controller
Introduction
Design process Whats GRASP pattern Whats responsibility Responsibilities and methods Responsibilities and Interaction Diagrams
Design Process
After identifying your requirements and creating a domain model, then add methods to the software classes, and define the messaging between the objects to fulfill the requirements.
Whats responsibility
Doing:
Doing something itself, such as creating an object or
doing a calculation Initiating action in other objects Controlling and coordinating activities in other objects.
Knowing:
Knowing about private encapsulated data Knowing about related objects Knowing about things it can derive or calculate
Information Expert
Assign a responsibility to the information expert the class that has the information necessary to fulfill the responsibility. What is a general principle of assigning responsibilities to objects?
Who should be responsible for knowing/doing ? Domain model (domain expert, domain analysis) to
Sale date
Sale date
SalesLineItem quantity
Creator
Who should be responsible for creating a new instance of some class? Creational Design Pattern Assign class B the responsibility to create an instance of class A if one or more of the following is true:
B aggregates A B contains A B records instance of A objects B closely use A objects B passes initializing data to A
Low Coupling
Coupling is a measure of how strongly one element is connected to, has knowledge of, or relies on other elements. Low coupling supports increased reuse. Our goal is to design for low coupling, so that changes in one element (sub-system, system, class, etc.) will limit changes to other elements.
High Cohesion
Cohesion is a measure of relatedness. High Cohesion says elements are strongly related to one another. Designs with low cohesion are difficult to maintain and reuse. One of the fundamental goals of an effective design is to achieve high cohesion with low coupling
Controller
Assign the responsibility for receiving or handling a system event message to a class representing one of the following choices:
Represents the overall system, device, or subsystem Represents a use case within which the system event occurs.
Who should be the controller for system events such as enterItem and endSale? Which class should be responsible for receiving system event message? Interface layer does not handle system events. The controller receives the service request from the UI layer and coordinates their fulfillment, ie., Command, Faade, and etc.
Thank You.