mvc mvp
play

MVC / MVP Reid Holmes [Image from: - PowerPoint PPT Presentation

Material and some slide content from: - Krzysztof Czarnecki - Ian Sommerville - Head First Design Patterns MVC / MVP Reid Holmes [Image from:


  1. Material and some slide content from: - Krzysztof Czarnecki - Ian Sommerville - Head First Design Patterns MVC / MVP Reid Holmes [Image from: http://merroun.wordpress.com/2012/03/28/mvvm-mvp-and-mvc-software-patterns-againts-3-layered-architecture/ ]

  2. Background ‣ MVC started w/ Smalltalk-80 ‣ Java UI frameworks & EJBs reignited interest ‣ Also prevalent in GWT and .NET development REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  3. MVC Motivation ‣ UI changes more frequently than business logic ‣ e.g., layout changes (esp. in web applications) ‣ The same data is often displayed in di ff erent ways ‣ e.g., table view vs chart view ‣ The same business logic can drive both ‣ Designers and developers are di ff erent people ‣ Testing UI code is di ffi cult and expensive ‣ Main Goal: Decouple models and views ‣ Increase maintainability/testability of system ‣ Permit new views to be developed REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  4. Model ‣ Contains application data ‣ This is often persisted to a backing store ‣ Does not know how to present itself ‣ Is domain independent ‣ Are often Subjects in the Observer pattern REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  5. View ‣ Presents the model to the user ‣ Allows the user to manipulate the data ‣ Does not store data ‣ Is configurable to display di ff erent data REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  6. Controller ‣ Glues Model and View together ‣ Updates the view when the Model changes ‣ Updates the model when the user manipulates the view ‣ Houses the application logic ‣ Loose coupling between Model and others ‣ View tightly cohesive with its Controller REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  7. Abstract topology 2 <<updates state>> Controller 1 Model <<changes>> 4 3 View <<retrieves state>> <<notifies of state changes>> REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  8. Concrete ViewController c = new ViewController(); IView v = c.createView(c); IModel m = c.loadModel(); topology m.addListener(v); [Dependency injection would remove explicit new in c.createView()] MobileView BrowserView TabletView MockView ViewController Model REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  9. Interaction mechanism ‣ User interacts with the UI (View) ‣ UI (View) notifies controller of changes ‣ Controller handles notifications, processing them into actions that can be performed on the model ‣ Controller modifies the model as required ‣ If the model changes, it fires modification events ‣ The view responds to the modification events REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  10. Benefits and tradeoffs ‣ Pro: ‣ Decouple view from model ‣ Support multiple views [collaborative views] ‣ Maintainability [add new views] ‣ Split teams [relieve critical path] ‣ Testability [reduce UI testing] ‣ Con: ‣ Complexity [indirection, events] ‣ E ffi ciency [frequent updates, large models] REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  11. Compound Pattern ‣ MVC (and other similar patterns) rely upon several more basic design patterns ‣ In MVC: ‣ View (strategy) / Controller (context) leverage the strategy pattern ‣ View is often uses a composite pattern (for nested views) ‣ View (observer) / Model (subject) interact through the observer pattern ‣ Other meta-patterns rely upon similar lower-level design patterns REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  12. MVP Motivation ‣ Take MVC a tiny bit further: ‣ Enhance testability ‣ Further separate Designers from Developers ‣ Leveraged by both GWT and .NET REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  13. Model ‣ Contains application data ‣ This is often persisted to a backing store ‣ Does not know how to present itself ‣ Is domain independent ‣ Often fires events to an Event Bus REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  14. View ‣ Thin UI front-end for controller ‣ Does not store data ‣ Can be interchanged easily ‣ Does not ever see or manipulate Model objects ‣ Only interacts with primitives ‣ e.g., (setUser(String) instead of setUser(User)) REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  15. Controller ‣ Glues Model and View together ‣ Updates the view when the Model changes ‣ Updates the model when the user manipulates the view ‣ Houses the application logic REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  16. MVP Topology View 4 1 <<notifies>> <<refresh>> Presenter 2 <<notifies of state 3 <<updates, retrieves state>> changes>> Event Bus Model REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  17. Concrete MVP Topology MobileView BrowserView MockView OutlineView MockOutline ViewController OutlineController App Controller App Controller can build and tear down <<notifies of state changes>> controllers. Model Event Bus REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  18. Concrete Example main(String[] args) { AppController ac = new AppController(); IModel m = ac.setModel(Persist.loadModel()); m.addListener(ac); ac.showMain(); } AppController::showMain() { ViewController vc = new ViewController(this); v.showMain(); } ViewController::ViewController(AppController ac) { _controller = ac; Views and presenters _controller.getModel().addListener(vc); are tightly bound: IView v = createView(); public interface IView { v.setPresenter(); public void setPresenter(Presenter p); } public void showMain(); [Dependency injection should be used public interface Presenter { in ViewController.createView()] void onCancel(); void onAction(String action); public IView createView(); } } REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  19. Benefits and tradeoffs ‣ Same as MVC with improved: ‣ Decoupling of views from the model ‣ Split teams [relieve critical path] ‣ Testability [reduce UI testing] ‣ A little less complex than MVC [fewer events] REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

  20. Architecture/Design Review Meeting ‣ Don’t think of this as an oral exam ‣ Start with 5 minute presentation (board only) ‣ Followed by 25 minute discussion ‣ Evaluating the product, not the producer ‣ Be prepared! ‣ Goal: ‣ Ensure system meets proposal ‣ Check consistency of design with architecture ‣ Talk about design decisions/justification ‣ Discuss support for future system evolution REID HOLMES - SE2: SOFTWARE DESIGN & ARCHITECTURE

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend