▪Challenges
▪Finding the right architecture fit
▪Validation
▪Demo and Samples
▪Cons
▪Key Takeaways
Structure of the talk
Slide 5
Slide 5 text
A
can transform their
life
by accessing the
world’s best
learning experience.
“
Slide 6
Slide 6 text
Available on Google Play
Store
Place your screenshot here
Android
App
1,825+
COURSES
18M+
LEARNERS
141+
PARTNERS
Slide 7
Slide 7 text
Single
learning
platform,
multiple
delivery
mediums
Slide 8
Slide 8 text
109% increase
in mobile usage
since last year
24
%
use mobile only
40
%
use mobile and
desktop
Slide 9
Slide 9 text
Over 500k (and growing) new learners join
Coursera every month
Slide 10
Slide 10 text
Cross team
Tightly aligned, loosely coupled
Faster MVPs
Learn fast, fail fast
Network Speeds
Edge, 2G, Spotty
Slide 11
Slide 11 text
Who all has ever used MVC?
Slide 12
Slide 12 text
MVC
Slide 13
Slide 13 text
MVP ?
MVC ?
MVVM ?
Slide 14
Slide 14 text
MODEL VIEW CONTROLLER
Manage application data Render model Handle view events
Interact with model
Invoke next UI
Table of Responsibilities
Slide 15
Slide 15 text
Mobile
Web
Desktop
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
MODEL VIEW CONTROLLER
Manage data from network Render model Handle view events
Manage data from local
storage
Manage view state Interact with model
Manage model consistency Navigation
Interact with system
components
Interact with system events
Update view on model
changes or system events
Slide 18
Slide 18 text
Model
public class CourseModel {
Course getFromDatabase() {
// fetch from db, or local cache
}
Course getFromNetwork() {
// fetch from apis, cache when possible
}
}
Slide 19
Slide 19 text
View
public class ExpandableCourseListActivity {
void onSaveInstanceState(Bundle b) {
// save all expanded states
}
}
MODEL VIEW CONTROLLER
Manage data from local
storage
Render model Handle view events
Manage data from network Manage view state Interact with model
Manage model consistency Navigation
Interact with system
components
Interact with system events
Update view on model
changes or system events
Slide 24
Slide 24 text
Interactor?
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
MODEL VIEW CONTROLLER INTERACTOR
Manage data from
local storage
Render view data Handle view events
Interact with
external entities
Manage data from
network
Manage view data/
updates
Navigation
Manage model
consistency
Forward view data
updates to view
Slide 27
Slide 27 text
View Model ?
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
MODEL VIEW CONTROLLER INTERACTOR VIEW MODEL
Manage data
from local
storage
Render view
model
Handle view
events
Interact with
external entities
Manage view
data
Manage data
from network
Navigation
Manage model
consistency
Manage view
model
Slide 30
Slide 30 text
Presenter ?
Slide 31
Slide 31 text
MODEL VIEW PRESENTER INTERACTOR VIEW MODEL
Manage data
from local
storage
Render view
model
Handle view
events
Interact with
external entities
Manage view
data
Manage data
from network
Navigation
Manage model
consistency
Manage view
model
Slide 32
Slide 32 text
Data Source
Slide 33
Slide 33 text
ENTITIES VIEW PRESENTER INTERACTOR VIEW MODEL
Represent
model objects
Render view
model
Handle view
events
Interact with
external entities
Manage view
data
Navigation
Manage view
model
Slide 34
Slide 34 text
FlowController ?
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
ENTITIES VIEW PRESENTER INTERACTOR VIEW MODEL
FLOW
CONTROLLER
Represent
model objects
Render view
model
Manage view
events and
view model
Interact
with external
entities
Manage view
data
Navigation