SlideShare a Scribd company logo
Design Patterns 05/28/10 Week 6: MVC and Other Patterns Jonathan Simon [email_address]
DJView ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
DJView: Version 1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
DJView: Version 1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DJView: Version 1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DJView: Version 1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
DJView: Version 1 05/28/10
Requirement Change… ,[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
So.. ,[object Object],[object Object],[object Object],[object Object],05/28/10
Creating a Subject ,[object Object],[object Object],[object Object],[object Object],05/28/10
Subject = BeatModel ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
BeatObserver and BPMObserver ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
DJView: Version 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10 Changes???
DJView: Version 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
DJView: Version 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Does DJView have a direct reference : To sequencer?  To bpm field?
DJView: Version 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10 What should we do with this DisplayBpm function? What  interfaces does DJView need to implement? Remember BeatModel…
DJView: Version 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10 What are we missing?
DJView: Version2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
DJView: Version 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Version 2 05/28/10 Notice beatObservers and bpmObservers in BeatModel.
View and Model ,[object Object],[object Object],[object Object],[object Object],05/28/10
Multiple Views w/One Model 05/28/10 Question:  Does the Model know any specific details about the UI elements on the View?
Definition (Partial): Model ,[object Object],[object Object],[object Object],[object Object],05/28/10
Definition (Partial): View ,[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Requirement Change ,[object Object],[object Object],[object Object],05/28/10
DJView: Version 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],We know that we cannot re-use UI elements when we change Views.
Challenge ,[object Object],[object Object],[object Object],05/28/10
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Inheritance ,[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Inheritance (cont) ,[object Object],[object Object],[object Object],05/28/10
Composition ,[object Object],[object Object],[object Object],[object Object],05/28/10
What about the Model? ,[object Object],[object Object],[object Object],05/28/10
DJView: Version 3 (Pt 1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10 Note: The only reason that View needs Model is for registering of events and getting state from Model.
DJView: Version 3 (Pt 2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10 The View delegates all actions to the Controller.
DJView: Version 3 (Pt 3) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10 NOTE: If we have to port this View from Windows to Web, here is where the crux of our changes will occur.
BeatController ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Why???
BeatController ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10 Controller sends a message to Model to update data…and sends a message back to the View. Note: Not showing the Model here. It is exactly the same!
The Big Picture 05/28/10 See diagram on page 530.
Definition: Model ,[object Object],[object Object],[object Object],[object Object],05/28/10
Definition: View ,[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Definition: Controller ,[object Object],[object Object],[object Object],05/28/10
Lab: Part I ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lab: Part II ,[object Object],[object Object],05/28/10
Answer : Part I ,[object Object],[object Object],[object Object],[object Object],05/28/10
Answer: Part II ,[object Object],[object Object],[object Object],[object Object],05/28/10
Testing ,[object Object],[object Object],[object Object],05/28/10
Frameworks for MVC ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Model View Presenter (MVP) ,[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Other Patterns ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Iterator ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Iterator (cont) ,[object Object],[object Object],[object Object],05/28/10
Composite ,[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Composite (cont) ,[object Object],[object Object],05/28/10
Builder ,[object Object],[object Object],[object Object],05/28/10
Facade ,[object Object],[object Object],05/28/10
State Pattern ,[object Object],[object Object],[object Object],05/28/10
Chain of Responsibility ,[object Object],[object Object],[object Object],05/28/10
Flyweight ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Memento ,[object Object],[object Object],05/28/10
Next Steps? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],05/28/10
Martin Fowler ,[object Object],[object Object],[object Object],05/28/10

More Related Content

What's hot

What's hot (11)

Dagger 2. Right way to do Dependency Injection
Dagger 2. Right way to do Dependency InjectionDagger 2. Right way to do Dependency Injection
Dagger 2. Right way to do Dependency Injection
 
04b swing tutorial
04b swing tutorial04b swing tutorial
04b swing tutorial
 
Mvp - типичные задачи и способ их решения в Moxy
Mvp - типичные задачи и способ их решения в MoxyMvp - типичные задачи и способ их решения в Moxy
Mvp - типичные задачи и способ их решения в Moxy
 
Dagger for dummies
Dagger for dummiesDagger for dummies
Dagger for dummies
 
RxJava 2 Reactive extensions for the JVM
RxJava 2  Reactive extensions for the JVMRxJava 2  Reactive extensions for the JVM
RxJava 2 Reactive extensions for the JVM
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andev
 
Beat the Clock: Background Tasking in Windows 8
Beat the Clock: Background Tasking in Windows 8Beat the Clock: Background Tasking in Windows 8
Beat the Clock: Background Tasking in Windows 8
 
Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2
 
Java- GUI- Mazenet solution
Java- GUI- Mazenet solutionJava- GUI- Mazenet solution
Java- GUI- Mazenet solution
 
Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02
 
Vue next
Vue nextVue next
Vue next
 

Viewers also liked

Operating system.ppt (1)
Operating system.ppt (1)Operating system.ppt (1)
Operating system.ppt (1)
Vaibhav Bajaj
 

Viewers also liked (17)

Strategy and Template Pattern
Strategy and Template PatternStrategy and Template Pattern
Strategy and Template Pattern
 
Factory and Abstract Factory
Factory and Abstract FactoryFactory and Abstract Factory
Factory and Abstract Factory
 
Observer and Decorator Pattern
Observer and Decorator PatternObserver and Decorator Pattern
Observer and Decorator Pattern
 
Introduction to Design Patterns and Singleton
Introduction to Design Patterns and SingletonIntroduction to Design Patterns and Singleton
Introduction to Design Patterns and Singleton
 
Design Patterns (Examples in .NET)
Design Patterns (Examples in .NET)Design Patterns (Examples in .NET)
Design Patterns (Examples in .NET)
 
Software design patterns ppt
Software design patterns pptSoftware design patterns ppt
Software design patterns ppt
 
CLTL python course: Object Oriented Programming (2/3)
CLTL python course: Object Oriented Programming (2/3)CLTL python course: Object Oriented Programming (2/3)
CLTL python course: Object Oriented Programming (2/3)
 
Desing pattern prototype-Factory Method, Prototype and Builder
Desing pattern prototype-Factory Method, Prototype and Builder Desing pattern prototype-Factory Method, Prototype and Builder
Desing pattern prototype-Factory Method, Prototype and Builder
 
Chain of responsibility
Chain of responsibilityChain of responsibility
Chain of responsibility
 
Chain of Responsibility Pattern
Chain of Responsibility PatternChain of Responsibility Pattern
Chain of Responsibility Pattern
 
Design Patterns For 70% Of Programmers In The World
Design Patterns For 70% Of Programmers In The WorldDesign Patterns For 70% Of Programmers In The World
Design Patterns For 70% Of Programmers In The World
 
Software Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill SparksSoftware Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill Sparks
 
Operating system.ppt (1)
Operating system.ppt (1)Operating system.ppt (1)
Operating system.ppt (1)
 
Operating system overview concepts ppt
Operating system overview concepts pptOperating system overview concepts ppt
Operating system overview concepts ppt
 
Mac OS(Operating System)
Mac OS(Operating System)Mac OS(Operating System)
Mac OS(Operating System)
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar to MVC and Other Design Patterns

0106 debugging
0106 debugging0106 debugging
0106 debugging
vkyecc1
 
User Guide of Regression Test & Validation Tool (v1.0)
User Guide of Regression Test & Validation Tool (v1.0)User Guide of Regression Test & Validation Tool (v1.0)
User Guide of Regression Test & Validation Tool (v1.0)
Chen Fang
 
Dynamics ax 2012 workflow development
Dynamics ax 2012 workflow development Dynamics ax 2012 workflow development
Dynamics ax 2012 workflow development
Ahmed Farag
 
Abapdebuggingfrombasictoadvance 140214043218-phpapp01
Abapdebuggingfrombasictoadvance 140214043218-phpapp01Abapdebuggingfrombasictoadvance 140214043218-phpapp01
Abapdebuggingfrombasictoadvance 140214043218-phpapp01
IT TRAINER
 

Similar to MVC and Other Design Patterns (20)

Game Programming I - Introduction
Game Programming I - IntroductionGame Programming I - Introduction
Game Programming I - Introduction
 
myslide1
myslide1myslide1
myslide1
 
myslide6
myslide6myslide6
myslide6
 
NewSeriesSlideShare
NewSeriesSlideShareNewSeriesSlideShare
NewSeriesSlideShare
 
0106 debugging
0106 debugging0106 debugging
0106 debugging
 
CodePool Liverpool 2013 - Microsoft Gadgeteer Presentation
CodePool Liverpool 2013 - Microsoft Gadgeteer PresentationCodePool Liverpool 2013 - Microsoft Gadgeteer Presentation
CodePool Liverpool 2013 - Microsoft Gadgeteer Presentation
 
java presentation on Swings chapter java presentation on Swings
java presentation on Swings chapter java presentation on Swingsjava presentation on Swings chapter java presentation on Swings
java presentation on Swings chapter java presentation on Swings
 
A View of MPC Control from Operations to Design
A View of MPC Control from Operations to DesignA View of MPC Control from Operations to Design
A View of MPC Control from Operations to Design
 
Table maintenance generator and its modifications
Table maintenance generator and its modificationsTable maintenance generator and its modifications
Table maintenance generator and its modifications
 
Hack2the future Microsoft .NET Gadgeteer
Hack2the future Microsoft .NET GadgeteerHack2the future Microsoft .NET Gadgeteer
Hack2the future Microsoft .NET Gadgeteer
 
User Guide of Regression Test & Validation Tool (v1.0)
User Guide of Regression Test & Validation Tool (v1.0)User Guide of Regression Test & Validation Tool (v1.0)
User Guide of Regression Test & Validation Tool (v1.0)
 
Dynamics ax 2012 workflow development
Dynamics ax 2012 workflow development Dynamics ax 2012 workflow development
Dynamics ax 2012 workflow development
 
Lsmw for master data upload simple explanation
Lsmw for master data upload simple explanationLsmw for master data upload simple explanation
Lsmw for master data upload simple explanation
 
PLC SCUBE STANDARD PROGRAMING EMERSON EDUARDO RODRIGUES
PLC SCUBE STANDARD PROGRAMING EMERSON EDUARDO RODRIGUESPLC SCUBE STANDARD PROGRAMING EMERSON EDUARDO RODRIGUES
PLC SCUBE STANDARD PROGRAMING EMERSON EDUARDO RODRIGUES
 
Basic Debugging
Basic DebuggingBasic Debugging
Basic Debugging
 
Abapdebuggingfrombasictoadvance 140214043218-phpapp01
Abapdebuggingfrombasictoadvance 140214043218-phpapp01Abapdebuggingfrombasictoadvance 140214043218-phpapp01
Abapdebuggingfrombasictoadvance 140214043218-phpapp01
 
Integrating Angular js & three.js
Integrating Angular js & three.jsIntegrating Angular js & three.js
Integrating Angular js & three.js
 
Kalyan 27 oct 2018
Kalyan 27 oct 2018Kalyan 27 oct 2018
Kalyan 27 oct 2018
 
Data warehousing unit 5.2
Data warehousing unit 5.2Data warehousing unit 5.2
Data warehousing unit 5.2
 
SAP BPC Learning Notes and Insights.docx
SAP BPC Learning Notes and Insights.docxSAP BPC Learning Notes and Insights.docx
SAP BPC Learning Notes and Insights.docx
 

Recently uploaded

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 

Recently uploaded (20)

From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 

MVC and Other Design Patterns

  • 1. Design Patterns 05/28/10 Week 6: MVC and Other Patterns Jonathan Simon [email_address]
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. DJView: Version 1 05/28/10
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. Version 2 05/28/10 Notice beatObservers and bpmObservers in BeatModel.
  • 21.
  • 22. Multiple Views w/One Model 05/28/10 Question: Does the Model know any specific details about the UI elements on the View?
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38. The Big Picture 05/28/10 See diagram on page 530.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.

Editor's Notes

  1. 13 November 2008
  2. 5 places in DJView that would need to be modified to update the setting of BPM 13 November 2008
  3. Answer: Observer!! 13 November 2008
  4. BPM Beat 13 November 2008
  5. 13 November 2008
  6. We have a separation of View and Model. We would need to duplicate the order that things happen. For example, Constructor – CreateViews, Disable, Enable, then we initialize Model Same with Start and Stop. We send a message to the Model then set UI state. 13 November 2008
  7. 13 November 2008
  8. 13 November 2008
  9. 13 November 2008