SlideShare a Scribd company logo
1 of 23
Download to read offline
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.
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
Design Patterns
The Book
http://amzn.to/book_DPEROOS 
Introduction to Design Patterns by João Miguel Pereira is licensed under a Creative 
Commons Attribution‐NonCommercial‐ShareAlike 3.0 Unported License
23

More Related Content

Similar to Introduction to Design Patterns

AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
AI-Human Dialogue for Architectural Design Concept Generation presentation 26...AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
Galala University
 
Search & Discovery Patterns, a UIE Virtual Seminar
Search & Discovery Patterns, a UIE Virtual SeminarSearch & Discovery Patterns, a UIE Virtual Seminar
Search & Discovery Patterns, a UIE Virtual Seminar
UIEpreviews
 
Introduction to Participatory Pattern Workshops
Introduction to Participatory Pattern WorkshopsIntroduction to Participatory Pattern Workshops
Introduction to Participatory Pattern Workshops
Yishay Mor
 

Similar to Introduction to Design Patterns (20)

Business Value of Social Software
Business Value of Social SoftwareBusiness Value of Social Software
Business Value of Social Software
 
IDT Module 1 NOTES.pptx
IDT Module 1 NOTES.pptxIDT Module 1 NOTES.pptx
IDT Module 1 NOTES.pptx
 
010821+presentation+oti.ppt
010821+presentation+oti.ppt010821+presentation+oti.ppt
010821+presentation+oti.ppt
 
Generation of Automatic Code using Design Patterns
Generation of Automatic Code using Design PatternsGeneration of Automatic Code using Design Patterns
Generation of Automatic Code using Design Patterns
 
Y&R
Y&RY&R
Y&R
 
Understanding and Conceptualizing interaction - Mary Margarat
Understanding and Conceptualizing interaction  - Mary MargaratUnderstanding and Conceptualizing interaction  - Mary Margarat
Understanding and Conceptualizing interaction - Mary Margarat
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Modeling should be an independent scientific discipline
Modeling should be an independent scientific disciplineModeling should be an independent scientific discipline
Modeling should be an independent scientific discipline
 
A Methodology for Building the Internet of Things
A Methodology for Building the Internet of ThingsA Methodology for Building the Internet of Things
A Methodology for Building the Internet of Things
 
AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
AI-Human Dialogue for Architectural Design Concept Generation presentation 26...AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
 
AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
AI-Human Dialogue for Architectural Design Concept Generation presentation 26...AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
AI-Human Dialogue for Architectural Design Concept Generation presentation 26...
 
Eugene Lee of SocialText #smo09 London
Eugene Lee of SocialText #smo09 LondonEugene Lee of SocialText #smo09 London
Eugene Lee of SocialText #smo09 London
 
Somesso London 09 Internal Communications Eugene Lee 5 15 09
Somesso London 09 Internal Communications Eugene Lee 5 15 09Somesso London 09 Internal Communications Eugene Lee 5 15 09
Somesso London 09 Internal Communications Eugene Lee 5 15 09
 
From project to product mindset and onwards to product platform architectures
From project to product mindset and onwards to product platform architecturesFrom project to product mindset and onwards to product platform architectures
From project to product mindset and onwards to product platform architectures
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2
 
Java Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | EdurekaJava Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | Edureka
 
Fluid Design Pattern Library
Fluid Design Pattern LibraryFluid Design Pattern Library
Fluid Design Pattern Library
 
The original 'Double Diamond' design methodbank
The original 'Double Diamond' design methodbank The original 'Double Diamond' design methodbank
The original 'Double Diamond' design methodbank
 
Search & Discovery Patterns, a UIE Virtual Seminar
Search & Discovery Patterns, a UIE Virtual SeminarSearch & Discovery Patterns, a UIE Virtual Seminar
Search & Discovery Patterns, a UIE Virtual Seminar
 
Introduction to Participatory Pattern Workshops
Introduction to Participatory Pattern WorkshopsIntroduction to Participatory Pattern Workshops
Introduction to Participatory Pattern Workshops
 

Recently uploaded

Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 

Recently uploaded (20)

Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 

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