Académique Documents
Professionnel Documents
Culture Documents
(15A05603)
BY
M.SOUMYA
ASST.PROFESSOR
DEPT OF CSE
SRIT
UNIT 1 : SYLLABUS
Introduction to Design Patterns
Chapter-1: Introduction
L1
WHAT IS A DESIGN PATTERN?
UNIT-I 3
L1
Design Patterns
•In software engineering, a design pattern is a general
repeatable solution to a commonly occurring problem in
software design.
•A design pattern isn't a finished design that can be
transformed directly into code.
•It is a description or template for how to solve a
problem that can be used in many different situations.
UNIT-I 5
• Benefits of patterns
Patterns are a toolkit of solutions to common
problems in software design. They define a
common language that helps your team
communicate more efficiently.
• Classification
Design patterns differ by their complexity,
level of detail and scale of applicability. In
addition, they can be categorized by their
intent and divided into three groups
• The concept of patterns was first described by
Christopher Alexander in A Pattern Language: Towns,
Buildings, Construction.
• Patterns are typical solutions to common problems in
object-oriented design. When a solution gets repeated
over and over in various projects, someone eventually
puts a name to it and describes the solution in detail.
That’s basically how a pattern gets discovered.
• Design patterns are a toolkit of tried and tested
solutions to common problems in software design. Even
if you never encounter these problems, knowing
patterns is still useful because it teaches you how to
solve all sorts of problems using principles of object-
oriented design.
L1
UNIT-I 8
L1
UNIT-I 10
L2
CONTD..
UNIT-I 11
In addition, all patterns can be categorized by their intent, or
purpose. This book covers three main groups of patterns:
Creational patterns provide object creation mechanisms that
increase flexibility and reuse of existing code.
Structural patterns explain how to assemble objects and classes
into larger structures, while keeping the structures flexible and
efficient.
Behavioral patterns take care of effective communication and the
assignment of responsibilities between objects.
L2
CONTD..
Relative Percentages
A B C D
A
X 15 35 35 15 D
Y 10 40 30 20 B
C
Z 10 40 30 20
A B C D
A=10%
B=40%
C=30% Application data
Change notification
D=20%
Requests, modifications
UNIT-I 13
L3
DESCRIBING DESIGN PATTERNS :
Design patterns capture the end product of the design
process as relationships between classes and objects.
By using a consistent format we describe the design pattern .
Each pattern is divided into sections according to the following
template.
The template lends a uniform structure to the information,
making design patterns easier to learn, compare, and use.
UNIT-I 14
L3
CONTD..
Pattern’s Name - conveys the essence of the pattern
succinctly. A good name is vital, because it will become part of
design vocabulary.
The pattern's classification - reflects the scheme
Intent: A Short statement that describes the following Questions
What does the design pattern do?
What is it’s rational and intend?
What particular design issue or problem does it address?
Also Known As: Other well-known names for the pattern, if any.
Motivation:
. A scenario that illustrates a design problem and how the class and object structures in the
pattern solve the problem.
UNIT-I 15
L3
CONTD..
Applicability:
Applicability: What are the situations in which the design patterns can
be applied?
What are example of the poor designs that the pattern can address?
How can recognize situations?
Structure:
Graphical representation of the classes in the pattern using a
notation based on the object Modeling Technique(OMT).
Participants:
The classes and/or objects participating in the design pattern and
their responsibilities.
UNIT-I 16
L3
CONTD..
Collaborations:
How the participants collaborate to carry out their responsibilities.
Consequences:
How does the pattern support its objectives?
What are the trade-offs and result of using the pattern ?
What aspect of the system structure does it let vary independently?
Implementation:
What pitfalls,hints,or techniques should be aware of when implementing
the pattern ?
Are there language-specific issues?
UNIT-I 17
L3
CONTD..
Sample Code:
Code fragments that illustrate how might implement the pattern
in c++ or Smalltalk.
Known Uses:
Examples of the pattern found in real systems.
Related Patterns:
What design patterns are closely related to this one? What are
the imp differences?
With Which other patterns should this one be used?
UNIT-I 18
L4
THE CATALOG OF DESIGN PATTERN
The catalog contains 23 design patterns. Their names and intents are listed next to give
you an overview.
Abstract Factory:
Provide an interface for creating families of related or dependent objects without
specifying their concrete classes.
Adaptor:
Convert the interface of a class into another interface clients expect.
Bridge:
Decouple an abstraction from its implementation so that two can vary independently.
UNIT-I 19
L4
CONTD..
Builder: (Builder pattern builds a complex object using simple objects and using
a step by step approach)
UNIT-I 20
L4
CONTD..
Command:
Encapsulate a request as an object ,thereby letting
parameterize clients with different request, queue or log
requests, and support undoable operations.
Composite:
Compose objects into tree structures to represent part-whole
hierarchies. Composite lets clients treat individual objects and
compositions of objects uniformly.
UNIT-I 21
L4
CONTD..
Decorator:
Attach additional responsibilities to an object
dynamically. Decorators provide a flexible alternative to
sub classing for extending functionality.
Façade:
Provide a unified interface to a set of interfaces in a
subsystem's. Facade defines a higher-level interface that
makes the subsystem easier to use.
UNIT-I 22
L4
CONTD..
Factory Method:
Defines an interface for creating an object ,but let subclasses decide which
class to instantiate. Factory Method lets a class defer instantiation to
subclasses.
Flyweight:
Use sharing to support large numbers of fine-grained objects efficiently.
Interpreter:
Given a language, defining a representation of its grammar along with an
interpreter that uses the representation to interpret sentences in the
language.
UNIT-I 23
L4
CONTD..
Iterator:
Mediator:
UNIT-I 24
CONTD..
Memento:
Observer:
UNIT-I 25
L4
CONTD..
Prototype:
Specify the kinds of objects to create using a prototypical
instance, and create new objects by copying this prototype.
Proxy:
Provide a surrogate or placeholder for another object to control
access to it.
Singleton:
Ensure a class has only one instance, and provide a point of
access to it.
State:
Allow an object to alter its behavior when its internal state
changes. the object will appear to change its class. UNIT-I 26
CONTD..
Strategy:
Template Method:
UNIT-I 27
L4
CONTD..
Visitor:
Represent an operation to be performed on the
elements of an object structure. Visitor lets you
define a new operation without changing the classes
of the elements on which it operates.
UNIT-I 28
L5
29
ORGANIZING THE CATALOG L5
Purpose
Creational Structural Behavioral
Class Factory Adapter Interpreter
Method (class) Template Method
S
Object Abstract Adapter Chain of
C
Factory (object) Responsibility
O
Builder Bridge Command
P
Prototype Composite Iterator
E
Singleton Decorator Mediator
Facade Memento
Flyweight Observer
Proxy State
Strategy U N I T - I 30
Visitor
L6
Design Pattern relationship
Memento
Proxy
saving state
Adapter
of iteration
Builder
Iterator Bridge
Enumerating
children
composed Command
Composite
using
adding
respnsibilities sharing
Decorator
to objects composites
changing skin
defining Chain of
versus guts Flyweight
grammar Responsibility
Visitor
sharing Interpreter
Strategy
strategies
Mediator Observer
State
defining
Prototype algorithm´s
steps Template Method Factory Method
CONTD..
2. Determining Object Granularity
Objects can vary tremendously in size and number
Facade pattern describes how to represent
complete subsystems as objects
Flyweight pattern describes how to support huge
numbers of objects
Abstract Factory (99) and Builder (110) yield
objects whose only responsibilities are creating
other objects.
Visitor (366) and Command (263) yield objects
whose only responsibilities are to implement a
request on another object or group of objects.
UNIT-I 34
L6
CONTD..
Contd..
4. Specifying Object Implementations
• An object’s implementation is defined by its class
• The class specifies the object’s
internal data and defines the operations
the object can perform.
• Objects is created by instantiating a class
– an object = an instance of a class
• Class inheritance
– parent class and subclass
UNIT-I 36
L6
Contd…
• Abstract class versus concrete class
– abstract operations
Contd…
UNIT-I 38
L6
Contd…
5.1. Inheritance versus Composition
• Two most common techniques for reuse
– class inheritance
• white-box reuse
– object composition
• black-box reuse
• Class inheritance
– advantages
• static, straightforward to use
• make the implementations being reuse more easily.
39
L6
5.1. Contd..
• Class inheritance (cont.)
– disadvantages
•the implementations inherited can’t be changed
at run time
•parent classes often define at least part of their
subclasses’ physical representation
– breaks encapsulation
•implementation dependencies can cause
problems when you’re trying to reuse a subclass
UNIT-I 40
L6
5.1. Contd…
• Object composition:- alternative to class inheritance.
new functionality is obtained by assembling or
composing objects to get more complex functionality.
Advantages
– dynamic at run time
– composition requires objects to respect each others‘ interfaces
• but does not break encapsulation
– any object can be replaced at run time
– Favoring object composition over class inheritance helps you
keep each class encapsulated and focused on one task
UNIT-I 41
L6
5.1. contd…
• Object composition (cont.)
– class and class hierarchies will remain small
– but will have more objects
• Principle of OOD is - Favor object
composition over class inheritance
• Inheritance and object composition
should work together
UNIT-I 42
L6
5.2. Delegation
• Delegation is a way of making
composition as powerful for reuse as
inheritance.
• Two objects are involved in handling a
request: a receiving object delegates
operations to its delegate
Window Rectangle
rectangle
Area() Area()
width
height
UNIT-I 43
L6
Delegation (cont.)
• Advantage: Makes it easy to compose behaviors at
run-time and to change the way they’re composed
• Disadvantage: dynamic, highly parameterized
software is harder to understand than more static
software
• Delegation is a good design choice only when it
simplifies more than it complicates
• Delegation is an extreme example of object
composition
• Several Design patterns use Delegation: State,
Strategy, and Visitor.
UNIT-I 44
L6
UNIT-I 45
L6
Inheritance versus
Parameterized Types (cont.)
• Three ways to compose
– object composition :lets you change the behavior
being composed at run-time, but it requires
indirection and can be less efficient
– inheritance :lets you provide default implementations
for operations and lets subclasses override them
– parameterized types: let you change the types that a
class can use
UNIT-I 46
L6
UNIT-I 47
L6
UNIT-I 48
L6
UNIT-I 49
L6
UNIT-I 51
L8
UNIT-I 52
L8
UNIT-I 53