Vous êtes sur la page 1sur 17

GRASP Pattern

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 GRASP pattern


This approach to understanding and using design principles is based on patterns of assigning responsibilities.  The GRASP patterns are a learning aid to help one understand essential object design, and apply design reasoning in a methodical, rational, explainable way.


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

Responsibilities and methods


:Sale makePayment create :Payment

makePayment implies Sale object has a responsibility to create a Payment object

Responsibilities and Interaction Diagrams


Interaction diagrams show choices in assigning responsibilities to objects.  GRASP patterns guide choices in where to assign responsibilities.  GRASP patterns are a codification of widely used basic principles.


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

design model (software classes). Any existing to any representative.

Example: What information is needed to determine the grand total?

Sale date

Product description price itemID

Sale date

SalesLineItem quantity

Product description price itemID

Who is information expert?

Sale date getTotal

SalesLineItem quantity getSubTotal

Product description price itemID getPrice

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.

Vous aimerez peut-être aussi