ݺߣ

ݺߣShare a Scribd company logo
Future Architecture MVP+C
WISNU KURNIAWAN
 Chat Widget
 GGWP
 Prism Mobile
 Prism Android SDK
 Selly
 ...
MVP + C in
Prism Mobile
MVP+C. Background
Programming, at its core, is about data transformation. And the case for
most mobile applications, it is about data transformation, data composition,
and UI presentation
RxJava to the rescue!
MVP+C. What is the C?
MVP+C. What is the C?
C is for Composer.
MVP+C. What is the C?
C is for Composer.
Composer is a class that has lifecycle (activity, fragment, dialog, etc) in
order to compose the stream of a process.
1
RxJava for compose stream
2 Dagger for Dependency Injection
3 Data source and Error handling
RxJava
Mode View Presenter Composer Architecture
RxNavi by Trello
https://github.com/trello/navi
Mode View Presenter Composer Architecture
RxJava
Do not use Rx if there is no event.
Mode View Presenter Composer Architecture
Mode View Presenter Composer Architecture
Mode View Presenter Composer Architecture
Dagger
Dagger
Make your class loose coupling between other class.
Mode View Presenter Composer Architecture
Mode View Presenter Composer Architecture
Mode View Presenter Composer Architecture
Mode View Presenter Composer Architecture
Mode View Presenter Composer Architecture
Mode View Presenter Composer Architecture
Dagger
Make easy to create unit test
Mode View Presenter Composer Architecture
Mode View Presenter Composer Architecture
Data source
&
Error handling
Data source
 Server
 Handle the communication to server using Retrofit
 Every request call to server MUST handle error
 Local
 Save data into local
 Shared Preference
 DBFlow
Error handling
Railway Oriented Programming
Error handling
 Kinds of error:
 NetworkError
 NoInternetError
 TokenExpiredError
 UnknownError
 ResultEmptyError
 All Error passed to composer
NetworkError
NoInternetError
TokenExpiredError
UnknownError
Usage
ResultEmptyError
Usage
Handled in Composer
Links
? https://github.com/trello/navi
? http://konmik.com/post/when_to_not_use_rxjava
? http://www.javacreed.com/why-should-we-use-dependency-injection
? https://google.github.io/dagger
? https://github.com/Raizlabs/DBFlow
? http://square.github.io/retrofit
? https://github.com/wisnukurniawan/Kovie -> Project Example
? https://github.com/elsennov/recipee -> Project Example
Thank you.
Telegram : @Wisnukurn
Medium : https://medium.com/@wisnukurniawan
Github : https://github.com/wisnukurniawan
Ad

Recommended

O futuro do .NET
O futuro do .NET
Letticia Nicoli
?
Conducting music with react native and machine learning
Conducting music with react native and machine learning
Justin Maurer
?
Maria Tverdostup Resume 2017
Maria Tverdostup Resume 2017
Maria Tverdostup
?
Cv dec 28-2018-mohammad-ashfaq
Cv dec 28-2018-mohammad-ashfaq
Mohammad Ashfaq
?
Mikki Mesfin's Resume
Mikki Mesfin's Resume
Mikki Mesfin
?
The building blocks of the next web, from Customer Journey to UI Components. ...
The building blocks of the next web, from Customer Journey to UI Components. ...
Codemotion
?
Resume savina
Resume savina
Maria Savina
?
Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos
Carlos Azaustre
?
We b development trends
We b development trends
Rajib Ahmed
?
Introduccin al JAMStack - JS Ourense
Introduccin al JAMStack - JS Ourense
Carlos Azaustre
?
Rakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real World
Tsuyoshi Ushio
?
VladimirSlaykovskiy.resume.doc
VladimirSlaykovskiy.resume.doc
Vladimir Slaykovskiy
?
Building applications in a Micro-frontends way
Building applications in a Micro-frontends way
Prasanna Venkatesan
?
A First Look at Windows Presentation Foundation Everywhere (WPF/E): a Cross
A First Look at Windows Presentation Foundation Everywhere (WPF/E): a Cross
goodfriday
?
SFDC Seamless Deployment Techniques
SFDC Seamless Deployment Techniques
Pawan Tyagi (2x)
?
de:code 2019 DT06 vs-show ɤäVS`
de:code 2019 DT06 vs-show ɤäVS`
Issei Hiraoka
?
Microsoft Silverlight 2
Microsoft Silverlight 2
David Chou
?
Kotlin native for iOS and Android
Kotlin native for iOS and Android
Shady Selim
?
Introducing wsgi_lineprof / PyCon JP 2017 LT
Introducing wsgi_lineprof / PyCon JP 2017 LT
Yusuke Miyazaki
?
Griffon: Swing just got fun again
Griffon: Swing just got fun again
James Williams
?
Lessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems Development
Michal Juhas
?
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
Qamar Abbas
?
20140207 xamarin-red fabriq-microsoft-techdays-nativemobileappdevelopmentwith...
20140207 xamarin-red fabriq-microsoft-techdays-nativemobileappdevelopmentwith...
RedFabriQ
?
Android component programming
Android component programming
Nhan Cao
?
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Karol Szmaj
?
MvvmCross Seminar
MvvmCross Seminar
Xamarin
?
MvvmCross Introduction
MvvmCross Introduction
Stuart Lodge
?
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
Radovan Semancik
?
Prism Forms App
Prism Forms App
Rod Hemphill
?
Introduction to xamarin
Introduction to xamarin
Alejandro Ruiz Varela
?

More Related Content

What's hot (13)

We b development trends
We b development trends
Rajib Ahmed
?
Introduccin al JAMStack - JS Ourense
Introduccin al JAMStack - JS Ourense
Carlos Azaustre
?
Rakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real World
Tsuyoshi Ushio
?
VladimirSlaykovskiy.resume.doc
VladimirSlaykovskiy.resume.doc
Vladimir Slaykovskiy
?
Building applications in a Micro-frontends way
Building applications in a Micro-frontends way
Prasanna Venkatesan
?
A First Look at Windows Presentation Foundation Everywhere (WPF/E): a Cross
A First Look at Windows Presentation Foundation Everywhere (WPF/E): a Cross
goodfriday
?
SFDC Seamless Deployment Techniques
SFDC Seamless Deployment Techniques
Pawan Tyagi (2x)
?
de:code 2019 DT06 vs-show ɤäVS`
de:code 2019 DT06 vs-show ɤäVS`
Issei Hiraoka
?
Microsoft Silverlight 2
Microsoft Silverlight 2
David Chou
?
Kotlin native for iOS and Android
Kotlin native for iOS and Android
Shady Selim
?
Introducing wsgi_lineprof / PyCon JP 2017 LT
Introducing wsgi_lineprof / PyCon JP 2017 LT
Yusuke Miyazaki
?
Griffon: Swing just got fun again
Griffon: Swing just got fun again
James Williams
?
Lessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems Development
Michal Juhas
?
We b development trends
We b development trends
Rajib Ahmed
?
Introduccin al JAMStack - JS Ourense
Introduccin al JAMStack - JS Ourense
Carlos Azaustre
?
Rakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real World
Tsuyoshi Ushio
?
Building applications in a Micro-frontends way
Building applications in a Micro-frontends way
Prasanna Venkatesan
?
A First Look at Windows Presentation Foundation Everywhere (WPF/E): a Cross
A First Look at Windows Presentation Foundation Everywhere (WPF/E): a Cross
goodfriday
?
SFDC Seamless Deployment Techniques
SFDC Seamless Deployment Techniques
Pawan Tyagi (2x)
?
de:code 2019 DT06 vs-show ɤäVS`
de:code 2019 DT06 vs-show ɤäVS`
Issei Hiraoka
?
Microsoft Silverlight 2
Microsoft Silverlight 2
David Chou
?
Kotlin native for iOS and Android
Kotlin native for iOS and Android
Shady Selim
?
Introducing wsgi_lineprof / PyCon JP 2017 LT
Introducing wsgi_lineprof / PyCon JP 2017 LT
Yusuke Miyazaki
?
Griffon: Swing just got fun again
Griffon: Swing just got fun again
James Williams
?
Lessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems Development
Michal Juhas
?

Similar to Mode View Presenter Composer Architecture (18)

Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
Qamar Abbas
?
20140207 xamarin-red fabriq-microsoft-techdays-nativemobileappdevelopmentwith...
20140207 xamarin-red fabriq-microsoft-techdays-nativemobileappdevelopmentwith...
RedFabriQ
?
Android component programming
Android component programming
Nhan Cao
?
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Karol Szmaj
?
MvvmCross Seminar
MvvmCross Seminar
Xamarin
?
MvvmCross Introduction
MvvmCross Introduction
Stuart Lodge
?
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
Radovan Semancik
?
Prism Forms App
Prism Forms App
Rod Hemphill
?
Introduction to xamarin
Introduction to xamarin
Alejandro Ruiz Varela
?
Community day mvvmcross
Community day mvvmcross
Qframe
?
Introduction to Android- A session by Sagar Das
Introduction to Android- A session by Sagar Das
dscfetju
?
Xamarin.Forms Bootcamp
Xamarin.Forms Bootcamp
Mike Melusky
?
Clean Architecture
Clean Architecture
Badoo
?
JAX 08 - Agile RCP
JAX 08 - Agile RCP
Heiko Seeberger
?
Checklist app
Checklist app
Daisy Kumar
?
Introduction to xamarin
Introduction to xamarin
Daniel Fikre
?
Good bye Massive View Controller!
Good bye Massive View Controller!
Supercharge
?
GitHub halp app - Minimizing platform-specific code with MVVM - Justin Spahr-...
GitHub halp app - Minimizing platform-specific code with MVVM - Justin Spahr-...
Xamarin
?
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
Qamar Abbas
?
20140207 xamarin-red fabriq-microsoft-techdays-nativemobileappdevelopmentwith...
20140207 xamarin-red fabriq-microsoft-techdays-nativemobileappdevelopmentwith...
RedFabriQ
?
Android component programming
Android component programming
Nhan Cao
?
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Karol Szmaj
?
MvvmCross Seminar
MvvmCross Seminar
Xamarin
?
MvvmCross Introduction
MvvmCross Introduction
Stuart Lodge
?
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
Radovan Semancik
?
Community day mvvmcross
Community day mvvmcross
Qframe
?
Introduction to Android- A session by Sagar Das
Introduction to Android- A session by Sagar Das
dscfetju
?
Xamarin.Forms Bootcamp
Xamarin.Forms Bootcamp
Mike Melusky
?
Clean Architecture
Clean Architecture
Badoo
?
Introduction to xamarin
Introduction to xamarin
Daniel Fikre
?
Good bye Massive View Controller!
Good bye Massive View Controller!
Supercharge
?
GitHub halp app - Minimizing platform-specific code with MVVM - Justin Spahr-...
GitHub halp app - Minimizing platform-specific code with MVVM - Justin Spahr-...
Xamarin
?
Ad

Recently uploaded (20)

Mechanical Vibration_MIC 202_iit roorkee.pdf
Mechanical Vibration_MIC 202_iit roorkee.pdf
isahiliitr
?
Complete guidance book of Asp.Net Web API
Complete guidance book of Asp.Net Web API
Shabista Imam
?
Solar thermal C Flat plate and concentrating collectors .pptx
Solar thermal C Flat plate and concentrating collectors .pptx
jdaniabraham1
?
Machine Learning - Classification Algorithms
Machine Learning - Classification Algorithms
resming1
?
A Cluster-Based Trusted Secure Multipath Routing Protocol for Mobile Ad Hoc N...
A Cluster-Based Trusted Secure Multipath Routing Protocol for Mobile Ad Hoc N...
IJCNCJournal
?
Introduction to Python Programming Language
Introduction to Python Programming Language
merlinjohnsy
?
Fundamentals of Digital Design_Class_12th April.pptx
Fundamentals of Digital Design_Class_12th April.pptx
drdebarshi1993
?
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
djiceramil
?
Rapid Prototyping for XR: Lecture 1 Introduction to Prototyping
Rapid Prototyping for XR: Lecture 1 Introduction to Prototyping
Mark Billinghurst
?
Introduction to Natural Language Processing - Stages in NLP Pipeline, Challen...
Introduction to Natural Language Processing - Stages in NLP Pipeline, Challen...
resming1
?
Deep Learning for Image Processing on 16 June 2025 MITS.pptx
Deep Learning for Image Processing on 16 June 2025 MITS.pptx
resming1
?
Rapid Prototyping for XR: Lecture 6 - AI for Prototyping and Research Directi...
Rapid Prototyping for XR: Lecture 6 - AI for Prototyping and Research Directi...
Mark Billinghurst
?
Tesla-Stock-Analysis-and-Forecast.pptx (1).pptx
Tesla-Stock-Analysis-and-Forecast.pptx (1).pptx
moonsony54
?
IPL_Logic_Flow.pdf Mainframe IPLMainframe IPL
IPL_Logic_Flow.pdf Mainframe IPLMainframe IPL
KhadijaKhadijaAouadi
?
Deep Learning for Natural Language Processing_FDP on 16 June 2025 MITS.pptx
Deep Learning for Natural Language Processing_FDP on 16 June 2025 MITS.pptx
resming1
?
System design handwritten notes guidance
System design handwritten notes guidance
Shabista Imam
?
Complete University of Calculus :: 2nd edition
Complete University of Calculus :: 2nd edition
Shabista Imam
?
Learning C Types of Machine Learning C Supervised Learning C Unsupervised UNI...
Learning C Types of Machine Learning C Supervised Learning C Unsupervised UNI...
23Q95A6706
?
Structural Wonderers_new and ancient.pptx
Structural Wonderers_new and ancient.pptx
nikopapa113
?
nnnnnnnnnnnn7777777777777777777777777777777.pptx
nnnnnnnnnnnn7777777777777777777777777777777.pptx
gayathri venkataramani
?
Mechanical Vibration_MIC 202_iit roorkee.pdf
Mechanical Vibration_MIC 202_iit roorkee.pdf
isahiliitr
?
Complete guidance book of Asp.Net Web API
Complete guidance book of Asp.Net Web API
Shabista Imam
?
Solar thermal C Flat plate and concentrating collectors .pptx
Solar thermal C Flat plate and concentrating collectors .pptx
jdaniabraham1
?
Machine Learning - Classification Algorithms
Machine Learning - Classification Algorithms
resming1
?
A Cluster-Based Trusted Secure Multipath Routing Protocol for Mobile Ad Hoc N...
A Cluster-Based Trusted Secure Multipath Routing Protocol for Mobile Ad Hoc N...
IJCNCJournal
?
Introduction to Python Programming Language
Introduction to Python Programming Language
merlinjohnsy
?
Fundamentals of Digital Design_Class_12th April.pptx
Fundamentals of Digital Design_Class_12th April.pptx
drdebarshi1993
?
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
djiceramil
?
Rapid Prototyping for XR: Lecture 1 Introduction to Prototyping
Rapid Prototyping for XR: Lecture 1 Introduction to Prototyping
Mark Billinghurst
?
Introduction to Natural Language Processing - Stages in NLP Pipeline, Challen...
Introduction to Natural Language Processing - Stages in NLP Pipeline, Challen...
resming1
?
Deep Learning for Image Processing on 16 June 2025 MITS.pptx
Deep Learning for Image Processing on 16 June 2025 MITS.pptx
resming1
?
Rapid Prototyping for XR: Lecture 6 - AI for Prototyping and Research Directi...
Rapid Prototyping for XR: Lecture 6 - AI for Prototyping and Research Directi...
Mark Billinghurst
?
Tesla-Stock-Analysis-and-Forecast.pptx (1).pptx
Tesla-Stock-Analysis-and-Forecast.pptx (1).pptx
moonsony54
?
IPL_Logic_Flow.pdf Mainframe IPLMainframe IPL
IPL_Logic_Flow.pdf Mainframe IPLMainframe IPL
KhadijaKhadijaAouadi
?
Deep Learning for Natural Language Processing_FDP on 16 June 2025 MITS.pptx
Deep Learning for Natural Language Processing_FDP on 16 June 2025 MITS.pptx
resming1
?
System design handwritten notes guidance
System design handwritten notes guidance
Shabista Imam
?
Complete University of Calculus :: 2nd edition
Complete University of Calculus :: 2nd edition
Shabista Imam
?
Learning C Types of Machine Learning C Supervised Learning C Unsupervised UNI...
Learning C Types of Machine Learning C Supervised Learning C Unsupervised UNI...
23Q95A6706
?
Structural Wonderers_new and ancient.pptx
Structural Wonderers_new and ancient.pptx
nikopapa113
?
nnnnnnnnnnnn7777777777777777777777777777777.pptx
nnnnnnnnnnnn7777777777777777777777777777777.pptx
gayathri venkataramani
?
Ad

Mode View Presenter Composer Architecture