Introduction to Design Patterns Part 1

advertisement
Introduction to Design Patterns
Part 1
Patterns - Architectural
Architectural Patterns:
Related to large-scale and coarse-grained design;
Typically applied during the early iterations (the
elaboration phase) when the major structures and
connections are established.
Examples: pipe and filter; MVC; Client-Server;
Transaction, Broker, others…
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
2
Patterns – Design
Design Patterns:
Related to the small and medium-scale design of
objects and frameworks.
Applicable to designing a solution for connecting
the large scale elements defined via architectural
patterns
Done during detailed design work after architectural
design is ‘solid.’
Design patterns are sometimes known as
architectural patterns.
Chapter 6: Using design patterns
© Lethbridge/Laganière 2001
3
General Concepts of Design Patterns
Design Patterns are groups of objects (and their
relationships) designed to support a ‘good object design’
What is ‘good object design?’
design that yields high cohesion of our objects,
design that has low coupling between our objects,
which, among other things, fosters more likely reuse
It is one thing to create an object…it is quite another to
create the right object for the right situation.
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
4
Object Design – Not a Simple Undertaking!
All design involves making decisions, and design is a decision-making
activity
Good object design involves the assignment of object responsibilities.
There are patterns or groupings of objects that work together to
accommodate commonly needed activities / functions that subscribe to
accepted principles of good design.
Deciding what methods belong where and how objects interact (their
relationships) is critically important and NOT trivial.
All this is really at the heart of what it means to develop an objectoriented system, not merely the drawing of domain model diagrams,
package diagrams, etc.
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
5
Preview: What Design Patterns are All About
• Want to look at more class diagrams – static.
• But we want to look at recurring groupings of classes that are
regularly used to address common problems.
• Want to take advantage of experiences of others and create a better,
more resilient design.
• Want to use (note the categories of common problems)
Patterns that assist us in separating concerns (abstractionoccurrence, observer, player-role);
Patterns used to better create class hierarchies of instances;
Patterns in which one method simply calls another method
in another class (have you seen this??);
Patterns where you use delegation to gain access to facilities
in one or more other classes (Adaptor, Façade,
Proxy patterns);
Patterns that help protect other objects from unanticipated access
(immutable and read-only interfaces).
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
6
What Design Patterns are All About
The recurring aspects of designs are called design patterns.
•  A pattern is the outline of a reusable solution to a general
problem encountered in a particular context
• Many of them have been systematically documented for all software
developers to use
• A good pattern should
—Be as general as possible
—Contain a solution that has been proven to effectively solve
the problem in the indicated context.
Studying patterns is an effective way to learn from the experience of
others
We will look at several.
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
7
Pattern Description Parameters
Context:
• The general situation in which the pattern applies
Problem:
—A short sentence or two raising the main difficulty.
Forces:
• The issues or concerns to consider when solving the problem
Solution:
• The recommended way to solve the problem in the given context.
—‘to balance the forces’
Antipatterns: (Optional)
• Solutions that are inferior or do not work in this context.
Related patterns: (Optional)
• Patterns that are similar to this pattern.
References:
• Who developed or inspired the pattern.
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
8
Pattern Context
Remember: our patterns define a relation among:
a certain context
a problem
a solution
• Here again, naming a pattern is using an abstraction of the details of
that pattern
• Patterns represent well-known knowledge
• Really documents common practice
• Patterns should be in the public domain
• Patterns need to be written for the public good.
• We are looking at certain arrangements of classes and
relationships among classes that provide better design and/or
more flexibility in addressing common design issues
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
9
Pattern Names
Patterns have names and the names are ‘suggestive’ of what function they
address.
Their names can be used in our vocabulary to ‘communicate design
intentions.’
The Façade Pattern, can be used to provide the interface from one
layer to the next…
Singleton Pattern – to ensure global access to a single instance of a
class. (a class (really object!) that many processes may desire
access to: a monitor?)
More Design Patterns:
Information Expert (Expert); Adaptor, Creator, Observer,
Low Coupling, High Cohesion, Controller; etc. etc.
Design Patterns are often organized into different categories too.
(Most of these notes from the first two lectures on Design Patterns are taken directly
from Larman’s text.)
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
10
Categories of Design Patterns
We will study several of the most often used patterns –
GRASP Patterns, and
Gang of Four (GoF) Patterns
Others too.
You will note you may be already doing some of these things.
You may now see more rationale and more formal reasoning
In all cases, the patterns will be most helpful as we strive to
design objects and groupings of objects to accommodate
common issues.
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
11
We will look at:
Gang of Four (GoF) Patterns
Grasp Patterns
Others.
Here are some (not in any particular order):
1. Abstract-Occurrence
2. Singleton(GofF)
3. Observer(GofF)
4. Delegation
5. Adapter(GofF)
6. Façade (GofF)
7. Proxy(GofF)
8. Information Expert (Expert) (Grasp Pattern)
9. Creator (Grasp Pattern)
10. Controller Pattern (Grasp Pattern)
© Lethbridge/Laganière 2001
Chapter 6: Using design patterns
12
Download