Traditional Mode-View-Controller 1. Views query data from Model 2. Views display data 3. Views wait for user input 4. View receives user input and passes to Controller 5. Controller a. Modifies data in Model b. Invokes algorithms in Model (which update data) c. Sets state of View i. Display message to user ii. Enable/disable UI components iii. Set sort order of data iv. Etc. 6. Model notifies Observers (i.e., Views) that data has changed 7. Views re-query data from Model 8. Views display new data 9. Views wait for user input MULTIPLE VIEWS ARE KEPT IN SYNC Model-View-Presenter 1. Presenters query data from Model 2. Presenters push data into Views 3. Views display data 4. Views wait for user input 5. View receives user input and passes to Presenter 6. Presenter a. Modifies data in Model b. Invokes algorithms in Model (which update data) c. Sets state of View i. Display message to user ii. Enable/disable UI components iii. Set sort order of data iv. Display "busy" feedback v. Etc. 7. Model notifies Observers (i.e., Presenters) that data has changed 8. Presenters re-query data from Model 9. Presenters push new data into Views 10. Views display new data 11. Views wait for user input MULTIPLE VIEWS ARE KEPT IN SYNC