SD Intro To Patterns

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 14

Introduction to Patterns

Concept of Design Pattern


• Arose originally in the field of (building)
architecture in 1970’s – Christopher Alexander
• Imported into software architecture and design in
late 1980s and 1990s

1
Pattern
• Describes a particular recurring design problem
that arises in specific design contexts
• Presents a well-proven generic scheme for its
solution
– The solution scheme is specified by describing its
constituent components, their responsibilities and
relationships, and the ways in which they collaborate

1
Characteristics of Patterns
• Describe solutions to recurring problems that
arise in specific design situations.
• Distilled from practical experience
• Describe a group of components (e.g., classes
or objects), how the components interact, and
the responsibilities of each component.
– Higher level abstractions than classes or objects.
• Provide vocabulary for communication among
designers
– Choice of name for pattern is very important.
2
Characteristics of Patterns
(cont.)
• Help document architectural vision of a design
– If vision clearly understood, then less likely
violated when system modified
• Provide conceptual skeleton for solution,
encourage the construction of software with
well-defined properties
• Are building blocks for construction of
complex designs
• Help designers manage complexity of software
3
Descriptions of Patterns
• Context

• Problem

• Solution

4
Descriptions of Patterns
Context

• Describes situation in which design problem


arises

5
Descriptions of Patterns
Problem
• Describes problem that arises repeatedly in the
context
– set of forces -- aspects that must be considered
when attempting a solution
• requirements the solution must satisfy
– e.g., efficiency
• constraints that must be considered
– e.g., use of a certain algorithm or protocol
• desirable properties of a solution
– e.g., easy to modify
6
Descriptions of Patterns
Solution
• Describes a proven solution to the problem
• Specifies a configuration of elements to balance
the forces associated with the problem
– Describes static structure of the configuration, identifying
components and connectors
• relationships among the components
– Describes dynamic runtime behavior of the configuration,
identifying control structure of components and connectors

7
Categories of Patterns
• Architectural patterns

• Design patterns

• Idioms

8
Categories of Patterns
Architectural patterns
“An architectural pattern expresses a fundamental
structural organization schema for software systems. It
provides a set of predefined subsystems, specifies their
responsibilities, and includes rules and guidelines for
organizing the relationships between them”

• High-level abstraction
• Fundamental design decision in development of a
software system
• Independent of the implementation language
• Example: Pipes and Filters pattern

9
Categories of Patterns
Design patterns
“A design pattern provides a scheme for refining the subsystems
or components of a software system, or the relationships
between them. It describes a commonly-recurring structure of
communicating components that solves a general design
problem within a particular context.”

• Mid-level abstraction
• Affects the structure of a subsystem
• Independent of the implementation language
• Examples:
– Adapter (or Wrapper) pattern
– Iterator pattern
– Strategy (or Policy) pattern
10
Categories of Patterns
Idioms
“An idiom is a low-level pattern specific to a
programming language. An idiom describes how to
implement particular aspects of components or the
relationships between them using the features of the
given language”

• Low-level abstraction
• Language-specific
• Examples:
– Language-specific iterator defined to implement interface
Iterator in Java
– Counted Pointer for storage management of shared objects in
C++
11
Classification of GoF Design Pattern
Creational Structural Behavioral
Factory Method Adapter Interpreter
Abstract Bridge Template
Factory Composite Method
Builder Decorator Chain of
Prototype Flyweight Responsibility
Singleton Facade Command
Proxy Iterator
Mediator
Memento
Observer
State
Strategy
Visitor

You might also like