MODEL VIEW CONTROLLER
Interact with DB Render Model Handle view events
Update model
Invoke next UI
Table of Responsibilities
Slide 13
Slide 13 text
Mobile
Web
Desktop
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
MODEL VIEW CONTROLLER
Interact with DB Render Model Handle view events
Interact with network Manage view state Update model
Navigation
Interact with system
components
Handle system events
Update view on system
events
Slide 16
Slide 16 text
Model
public class CourseModel {
Course getFromDatabase() {
// fetch from db, or local cache
}
Course getFromNetwork() {
// fetch from apis, cache when possible
}
}
Slide 17
Slide 17 text
View
public class ExpandableCourseListActivity
{
void onSaveInstanceState(Bundle b) {
// save all expanded states
}
}
MODEL VIEW CONTROLLER
Interact with DB Render Model Handle view events
Interact with network Manage view state Update model
Navigation
Interact with system
components
Handle system events
Update view on system
events
Slide 23
Slide 23 text
Interactor?
Slide 24
Slide 24 text
JUnit +
Mocking
Slide 25
Slide 25 text
MODEL VIEW CONTROLLER INTERACTOR
Retrieve data from
DB
Render Model
Handle view
events
Interact with
external entities
Retrieve data from
network
Manage view
state
Navigation
Forward system
events to view
Forward model
updates to view
MODEL VIEW CONTROLLER INTERACTOR VIEW MODEL
Retrieve data
from Network
Render View
Model
Handle view
events
Interact with
external
entities
View state /
behavior
Retrieve data
from network
Navigation
Update view
state
Slide 29
Slide 29 text
Presenter ?
Slide 30
Slide 30 text
MODEL VIEW PRESENTER INTERACTOR VIEW MODEL
Retrieve data
from DB
Render View
Model
Handle view
events
Interact with
external
entities
View state /
behavior
Retrieve data
from network
Navigation
Update view
state
ENTITIES VIEW PRESENTER INTERACTOR VIEW MODEL
Get data from
Data Sources
Render View
Model
Handle view
events
Interact with
external
entities
View state /
behavior
Navigation
Update view
state
Slide 33
Slide 33 text
FlowController ?
Slide 34
Slide 34 text
Android +
Mocks
Slide 35
Slide 35 text
ENTITIES VIEW PRESENTER INTERACTOR VIEW MODEL
FLOW
CONTROLLER
Get data
from Data
Sources
Render View
Model
Handle view
events
Update view
state
Interact
with external
entities
View state /
behavior
Navigation
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
Apply Dependency
Inversion
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
S ingle Responsibility Principle
O pen/Closed Principle
L iskov Substitution Principle
I nterface Segregation Principle
D ependency Inversion Principle
Slide 42
Slide 42 text
Architecture is about
Intents not Frameworks
- Uncle Bob
Slide 43
Slide 43 text
No content
Slide 44
Slide 44 text
Implementation in
Practice
Slide 45
Slide 45 text
Activity
Video
Module
Activity
Quiz
Module
Navigation
Main
Activity
Shell
App
Catalog
Activity
Catalog
Module
url Intent
Intent
Register
with url
Modules
Slide 46
Slide 46 text
Deep links
Shell
App
Video
Activity
Video
Module
Catalog
Activity
Catalog
Module
register register
url
Intent
Intent
CatalogViewModel
public final BehaviorSubject catalog =
BehaviorSubject.create();
public void subscribeToCatalog(Action1 action) {
catalog.subscribe(action);
}
public void unsubscribeToCatalog() {
catalog.unsubscribe();
}
Slide 71
Slide 71 text
CatalogInteractor
Context mContext;
public CatalogInteractor(Context context) {
mContext = context;
}
public Observable loadCatalog() {
return catalogDataSource.loadCatalog();
}
Slide 72
Slide 72 text
No content
Slide 73
Slide 73 text
No content
Slide 74
Slide 74 text
Coursera is hiring!
Slide 75
Slide 75 text
Questions ?
Slide 76
Slide 76 text
@richa123
rkhandelwal@coursera.org
richk
in/richak
Thank You