GRASP Pattern - West Chester University of Pennsylvania
Download
Report
Transcript GRASP Pattern - West Chester University of Pennsylvania
GRASP Pattern
Zhen Jiang
West Chester University
[email protected]
Outline
Introduction
Information Expert
Creator
Low Coupling
High Cohesion
Controller
Introduction
Design process
What’s GRASP pattern
What’s 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.
What’s 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.
What’s 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
Product
date
description
price
itemID
Sale
date
SalesLineItem
quantity
Who is information expert?
Product
description
price
itemID
Sale
date
getTotal
SalesLineItem
quantity
getSubTotal
Product
description
price
itemID
getPrice
Time sequence?
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.
Payment, register, and sale.
– Time sequence?
– Classes?
create :Payment
makePayment
:Register
:Sale
addPayment
makePayment
makePayment
:Sale
:Register
create
:Payment
High Cohesion
How to keep complexity manageable?
Time sequence of the above example.
More tasks?
Key role, key object, key class, key relations
Modular Design (indirect control)
Yin and Yang
Yin and Yang
– The light color area which indicates more
sunlight is called Yang (Sun). The dark color
area has less sunlight (more moonlight) and is
called Yin (Moon). Yang is like man. Yin is
like woman. Yang wouldn't grow without Yin.
Yin couldn't give birth without Yang.
Interdependent influence
Trade-off
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,
Façade, and etc.