Design Patterns Introduction
What is a Design Pattern?
How Patterns are used?
Reduce gap
Design
Implementation
Designer
Programmer
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: elements of reusable object-oriented software. 1995.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M.: Pattern-oriented software architecture: a system of patterns. 2002.
Design patterns you have already seen
Encapsulation pattern
Subclassing pattern
Iteration pattern
Exception pattern
Derived Conclusion
Pattern Categories
What is the addressing Quality Attribute?
What properties these patterns provide?
Design pattern example
Some examples of Design Patterns
Template for discussion
Non-software examples are derived from paper
& PPT – “Non-software examples of software
design patterns” (OOPSLA 97).
Facade (Non software example)
Provide a unified
interface to a set
of interfaces in a
subsystem.
Facade (Software counterpart)
Flyweight (Non software example)
Use sharing to
support large
numbers of fine-
grained objects
efficiently
Flyweight (Software counterpart)
Memory
Chain of Responsibility (Non software example)
Chain the
receiving objects
and pass the
request along the
chain until an
object handles it.
Chain of Responsibility (Software counterpart)
Login page
Password checking
Balance statement
Internet
Memento (Non software example)
Externalize
object’s state so
that object can be
restored to this
state later.
Memento (Software counterpart)
Observer (Non software example)
When an object
changes its state,
all its dependants
are notified.
Observer (Software counterpart)
Internet
Cricinfo Server
Adapter (Non software example)
Convert the
interface of a
class into another
Interface clients
expect.
Adapter (Software counterpart)
Java module
C++ module
Java Native
Interface (JNI)
Builder (Non software example)
Separate the construction
process of a complex object
from its representation so
that the same construction
Process can create different
representations.
Builder (Software counterpart)
Lexical
analysis
Syntax
analysis
Semantic
analysis
Intermediate code
Interpretation
Compiler process
Java Lexer
Java Parser
Semantic
analysis
Java byte code
JVM
Java Compiler
Python Lexer
Python Parser
Semantic
analysis
Python byte code
PVM
Python Compiler
Iterator (Non software example)
Provide a way to
access the
elements of a set
sequentially.
Iterator (Software counterpart)
Interpreter (Non software example)
Interpreter interprets
the sentences in a
language based
on its grammar.
Interpreter (Software counterpart)
:-) is interpreted as ☺
:-( is interpreted as ☹
In Gtalk/Yahoo messengers
Broker (Non software example)
Broker component is
responsible for
coordinating
communication
between clients and
remote servers.
Broker (Software counterpart)
Publisher-Subscriber (Non software example)
Publishers register
themselves to a
broker and
subscribers discover
publisher from broker.
Publisher-Subscriber (Software counterpart)
Forums (e.g. movie forums)
Proxy (Non software example)
Provide a surrogate or
placeholder for
another object to
control access to it.
Proxy (Software counterpart)
Strategy (Non software example)
A Strategy defines a set of algorithms that can be
used interchangeably.
Strategy (Software counterpart)
Multiple
interchangeable
weapons available to
attack an enemy.
Mediator (Non software example)
Loose coupling
between colleague
objects is achieved by
having colleagues
communicate with the
Mediator, rather than
one another.
Mediator (Software counterpart)
Gtalk Server
Master-Slave (Non software example)
Master component
distributes work to
identical slave
components and
computes a final
result from the results
when the slaves
return.
Master-Slave (Software counterpart)
Movie players
High-resolution Game players
Graphics partitioning
Layers (Software example)
Layers structure applications whose dominant
characteristic is a mix of low- and high- level issues.
MVC (Software example)
MVC structures interactive applications.
Microkernel (Software example)
Microkernel separates the variant and non-variant
parts of a product-line application.
Reflection (Software example)
Reflection pattern provides a mechanism for changing
structure and behavior of a system dynamically.
State (Software example)
An object alters its
behavior when its
internal state
changes.
Template Method (Software example)
Define the skeleton of an
algorithm in an operation,
deferring some steps to
subclasses.
Event handling in Java GUI
components is unimplemented.
Observer example
*
52