design patterns -session ii
Post on 09-Apr-2018
222 Views
Preview:
TRANSCRIPT
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 1/36
OO Design Patterns
Session 2
Observer, Strategy, Decorator
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 2/36
Observer Pattern
Or« How do I keep clients aware of
changes, when I¶m not sure, or don¶t
care, who they are?
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 3/36
Observer Pattern ± High Level
Category : Behavioral
The Observer Pattern allows one or
more objects (Observer) to monitor another object (Subject).
A subset of the Pub-Sub Pattern
When the state of one object changes,dependants are notified
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 4/36
Observer Pattern
OO Principals
Promotes loose couplings
The Subject does not need to be aware of
Observers except at runtime
Favors composition over inheritance
Program to an interface
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 5/36
Observer Pattern
Basic Structure
Observalable Subject
1 or more Observers
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 6/36
Observer Pattern ± Observer
The Observer can register and
unregister itself with the Subject
While registered any events the Subjectnotifies on are received by all Observers
The Observer can be programmed to an
interface that specifies a way for the
Subject to update it.
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 7/36
Observer Pattern ± Observer
The Observer is programmedto an interface that specifiesa way it to interact with theSubject
public interface Observer {
public void update(Subject o );
}
-OR-
public interface Observer {
public void update(Subject o, Data a );
}
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 8/36
Observer Pattern ± Subject
The Subject maintains a list
of Observers
The subject provides
access to Observers to
add or removethemselves from a
distribution list
When the Subject needs to
notify, it simply updates all
currently registeredObservers
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 9/36
Observer Pattern ± SUN Impl
Java has a number of Observer Pattern
implementation
Swing General Purpose Observer
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 10/36
Observer Pattern ± SUN Impl
General Purpose Observer
Java comes with an out of the box
implementation of the Observer Pattern
The subject extends the java.util.Obser vable
class
Observers implement the java.util.Obser ver
interface
void update(Observable o, Object arg)
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 11/36
Observer Pattern ± SUN Impl
Some Things to Consider
As mentioned this implementation forces us
to extend Observable for the subject
Remember favor composition over inheritance
This is implicitly single-threaded
Synchronous
As opposed to Asynch Pub/Sub
Push/Pull
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 12/36
Observer Pattern
Example
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 13/36
Observer Pattern
Q&A
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 14/36
Decorator Pattern
Or« How do I dynamically add
additional behaviors to an existing class?
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 15/36
Decorator Pattern ± High Level
Category : Structural
The Decorator Pattern allows
responsibility and functionality to beadded dynamically at run-time
Provides a flexible alternative to sub-
classing to extend functionality
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 16/36
Decorator Pattern
OO Principals
Encapsulate what varies
Favor composition over inheritance Program to interfaces
Strive for loosely coupled designs between
objects
Open/closed pr inciple
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 17/36
Decorator Pattern
Open/closed pr inciple
Objects should be open for extension, but
closed for modification
Allows an objects behavior to be modified
without altering its source
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 18/36
Decorator Pattern
Basic Structure
Abstract Component Class
Concrete Components Abstract Decorator
Concrete Decorator
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 19/36
Decorator Pattern
Basic Structure
Abstract Component Class
A common ancestor that all involved objects
extend
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 20/36
Decorator Pattern
Basic Structure
Concrete Components
The object to add dynamic behaviors to
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 21/36
Decorator Pattern
Basic Structure
Abstract Decorator Enforces the contract of the Abstract Component
Class
Allows for more decorator specific behaviors to be
defined
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 22/36
Decorator Pattern
Basic Structure
Concrete Decorator
Implements the specific behavior
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 23/36
Decorator Pattern
Real World Examples
java.io
Abstract Component Class
InputStream
Concrete Components
FileInputStream, StringBufferInputStream«
Abstract Decorator
FilterInputStream
Concrete Decorator
BufferedInputStream, DataInputStream«
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 24/36
Decorator Pattern
Example problem and Solution
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 25/36
Decorator Pattern
Cons
Can Cause ³Class Explosion´
Each Decorator is a class
Code can be hard to find/debug
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 26/36
Strategy Pattern
Or«How do I apply algorithms to data
dynamically?
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 27/36
Strategy Pattern ± High Level
Category : Behavioral
Allows algorithms vary independently
from clients that use them
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 28/36
Strategy Pattern
OO Principals
Encapsulate what varies
Favor composition over inheritance Program to interfaces
Strive for loosely coupled designs between
objects
Open/closed principle
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 29/36
Strategy Pattern
Basic structure
Context
Strategy Interface Concrete Strategies
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 30/36
Strategy Pattern
Context
Is Configured with aConcrete Strategy
Initiates the work of the Strategy via theStrategy Interface
May provide andinterface for theStrategy to accessit Data
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 31/36
Strategy Pattern
Strategy Interface
Defines a way for
the Context to
interact with eachalgorithm
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 32/36
Strategy Pattern
Concrete Strategy
Encapsulates the
algorithm
Performs the actualwork
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 33/36
Strategy Pattern
Real World Examples
Custom Sort options for lists
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 34/36
Strategy Pattern
Example problem and Solution
8/8/2019 Design Patterns -Session II
http://slidepdf.com/reader/full/design-patterns-session-ii 35/36
Strategy Pattern
Q&A
top related