Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Introduction to Design Patterns
1. Introduction to Design PatternsIntroduction to Design Patterns
João Miguel Pereira
http://jpereira.eu
M 2012May 2012
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative Commons Attribution‐NonCommercial‐ShareAlike
3.0 Unported License.
2. Introduction to Design PatternsIntroduction to Design Patterns
• What is a patternWhat is a pattern
• Architecture Patterns
i• Design Patterns
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
2
3. Introduction to Design PatternsIntroduction to Design Patterns
• What is a PatternWhat is a Pattern
• Architecture Patterns
i• Design Patterns
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
3
4. What is a PatternWhat is a Pattern
“It can be a template or model which can be used to generate things
or parts of a thing, especially if the things that are created have
enough in common for the underlying pattern to be inferred, in which enough in common for the underlying pattern to be inferred, in which
case the things are said to exhibit the unique pattern.“ ‐
http://en.wikipedia.org/wiki/Pattern
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
4
5. What is a Pattern
In construction of towns and building
"Each pattern describes a problem which occurs over and over again in our
environment, and then describes the core of the solution to that problem, in such a
h hi l i illi i i h d i i hway that you can use this solution a million times over, without ever doing it the
same way twice” ‐‐ Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksdahl‐King,
and Shlomo Angel. A Pattern Language. Oxford University Press, New York, 1977.
fl lfl lInfluential in
Software design
patterns
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
5
Christopher Alexander
6. What is a Pattern
In construction of Software
“Our solutions are expressed in terms of objects and interfaces instead of walls and
doors, but at the core of both kinds of patterns is a solution to a problem in a doo s, but at t e co e o bot ds o patte s s a so ut o to a p ob e a
context.” – Eric Gamma, et.al. Design patterns : elements of reusable object‐oriented software
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
6
Christopher Alexander
Eric Gamma
7. What is a Pattern
Essential Elements of a Pattern
• Name Use it in our design vocabularyName Use it in our design vocabulary
• Problem Explain the problem and the context.
S l i• Solution Describes the elements that make up the
design, their relationships, responsibilities, and
collaborationscollaborations.
• Consequences The results and trade‐offs of applying
the patternthe pattern .
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
7
Christopher Alexander
8. What is a pattern
Abstraction in Software Design Patterns
Abstract
Architecture patterns
FocusFocus
Design patterns
Details
Focus
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
8
9. Introduction to Design PatternsIntroduction to Design Patterns
• What is a Design PatternWhat is a Design Pattern
• Architecture Patterns
i• Design Patterns
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
9
10. Architecture PatternsArchitecture Patterns
• A fundamental structural organization schemaA fundamental structural organization schema
for software systems.
• Provides predefined subsystems and their• Provides predefined subsystems and their
responsibilities
Gi l f i i h l i hi• Give rules for organizing the relationships
between these sub systems
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
10
11. Architecture PatternsArchitecture Patterns
• Architecture pattern example: LayersArchitecture pattern example: Layers
– Helps to structure applications that can be
decomposed into groups of subtasks in whichdecomposed into groups of subtasks in which
each group of subtasks is at a particular level of
abstraction
Presentation Layer
Domain/Business Layer
Data Layer
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
11
y
12. Architecture PatternsArchitecture Patterns
• Architecture pattern example: Pipes & FiltersArchitecture pattern example: Pipes & Filters
– Help to structure systems that process a stream of
datadata.
JSON Filter
Data
Extractor
Filter
Data
Normalizer
Data
Storage
Filter
Internet Publisher
Filter
JSON Filter
XML Filter
HTML Filter
Data
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
12
ata
13. Architecture PatternsArchitecture Patterns
• Architecture pattern example: Blackboardc tectu e patte e a p e: ac boa d
– Several specialized subsystems assemble their
knowledge to build a possibly partial or approximate
l tisolution.
– Useful for problems for which no deterministic
solution strategies are known.g
CRM
S t
Inventory
S t
Financial
System
Delivery
System System SystemSystem
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
13
Enterprise Service Bus (EX: Service Mix)
14. Architecture PatternsArchitecture Patterns
• Architecture pattern example: Model ViewArchitecture pattern example: Model View
Controller
– Splits the application into separate layers (Using– Splits the application into separate layers (Using
Layers Pattern)
Presentation Layer
Model LayerModel Layer
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
14
15. Architecture PatternsArchitecture Patterns
• Architecture pattern example: Model ViewArchitecture pattern example: Model View
Controller
– Presentation layer is further split into View and– Presentation layer is further split into View and
Controller
Presentation Layer
View Layer
Controller Layer
Model Layer
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
15
16. Architecture PatternsArchitecture Patterns
• Architecture pattern example: Model ViewArchitecture pattern example: Model View
Controller
– Each layer is assigned a set of responsibilities– Each layer is assigned a set of responsibilities
View Layer
Renders the model into a user interface.
Can render HTLM, JSON, XML, etc.
View Layer
Controller Layer
Responds to user events and
may invoke changes on the
model layer
Model Layer
Controller Layer
Operate on business data, i.e., the
business Logic.
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
16
17. Architecture PatternsArchitecture Patterns
• Architecture pattern example: Model ViewArchitecture pattern example: Model View
Controller
– User events in a Web application are usually an– User events, in a Web application, are usually an
HTTP Request
HTTP Request1 HTTP Response4
Controller
ModelViews
Render3 Update2
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
17
18. Architecture PatternsArchitecture Patterns
• Architecture pattern example: Model View Controllerp p
– Many interpretations of the Pattern
– Some web links:
h //h i ifi i / / h / / i d h l• http://heim.ifi.uio.no/~trygver/themes/mvc/mvc‐index.html
• http://martinfowler.com/eaaDev/uiArchs.html
• http://st‐www.cs.illinois.edu/users/smarch/st‐docs/mvc.html
– Some books:
• Patterns of Enterprise Architecture (http://amzn.to/book_PEA )
• Pattern‐Oriented Software Architecture Volume 1: A System of
Patterns (http://amzn.to/book_POSAV1 )
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
18
19. Architecture PatternsArchitecture Patterns
• More Architecture Patterns:More Architecture Patterns:
– Patterns of Enterprise Architecture
• http://amzn to/book PEAhttp://amzn.to/book_PEA
– Pattern‐Oriented Software Architecture Volume 1:
A System of Patterns
• http://amzn.to/book_POSAV1
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
19
20. Introduction to Design PatternsIntroduction to Design Patterns
• What is a Design PatternWhat is a Design Pattern
• Architecture Patterns
i• Design Patterns
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
20
21. Design patternDesign pattern
Framework for thinking and
d i i OO !designing OO programs!
Reusable knowledge in SoftwareReusable knowledge in Software
Design!
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
21
22. Design patternDesign pattern
Java Frameworks for OOKnowledge Framework Java Frameworks for OO
Development
Knowledge Framework
for OO Design
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
22