Suche senden
Hochladen
Who needs MVVM? Architecture components & MVP - Timor Surkis, Colu
•
1 gefällt mir
•
265 views
DroidConTLV
Folgen
As presented in droidcon Tel Aviv 2018: http://il.droidcon.com
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 45
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Educating your app – adding ML edge to your apps - Maoz Tamir
Educating your app – adding ML edge to your apps - Maoz Tamir
DroidConTLV
Constraint-ly motion - making your app dance - John Hoford, Google
Constraint-ly motion - making your app dance - John Hoford, Google
DroidConTLV
Introduction to React Native - Lev Vidrak, Wix
Introduction to React Native - Lev Vidrak, Wix
DroidConTLV
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Animesh Singh
EclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCP
Heiko Seeberger
How to create an Angular builder
How to create an Angular builder
Maurizio Vitale
Eclipse based products
Eclipse based products
ESPRIT
Spring.Net, Feb 2008, PostSharp: A Technical Introduction
Spring.Net, Feb 2008, PostSharp: A Technical Introduction
gfraiteur
Empfohlen
Educating your app – adding ML edge to your apps - Maoz Tamir
Educating your app – adding ML edge to your apps - Maoz Tamir
DroidConTLV
Constraint-ly motion - making your app dance - John Hoford, Google
Constraint-ly motion - making your app dance - John Hoford, Google
DroidConTLV
Introduction to React Native - Lev Vidrak, Wix
Introduction to React Native - Lev Vidrak, Wix
DroidConTLV
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Animesh Singh
EclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCP
Heiko Seeberger
How to create an Angular builder
How to create an Angular builder
Maurizio Vitale
Eclipse based products
Eclipse based products
ESPRIT
Spring.Net, Feb 2008, PostSharp: A Technical Introduction
Spring.Net, Feb 2008, PostSharp: A Technical Introduction
gfraiteur
0 to Angular in 45 Mins
0 to Angular in 45 Mins
Craig Shoemaker
server side Swift
server side Swift
NormanSutorius
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
Chris Fregly
Boost your App with Gatling
Boost your App with Gatling
Knoldus Inc.
How to deploy machine learning models in the Cloud
How to deploy machine learning models in the Cloud
Alex Casalboni
From training to explainability via git ops
From training to explainability via git ops
Ryan Dawson
ServiceWorkerとES6 Modules時代のTypescript開発考察
ServiceWorkerとES6 Modules時代のTypescript開発考察
Taketoshi 青野健利
Net campus2015 antimomusone
Net campus2015 antimomusone
DotNetCampus
Yannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflow
MarynaHoldaieva
ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
Rajat Kumar
A Graphical Way of Thinking About React Designs
A Graphical Way of Thinking About React Designs
olafnouvortne
SPRING BOOT DANS UN CONTAINER OUTILS ET PRATIQUES
SPRING BOOT DANS UN CONTAINER OUTILS ET PRATIQUES
VMware Tanzu
The Prana IoC Container
The Prana IoC Container
Christophe Herreman
SiriusCon 2015 - Breathe Life into Your Designer!
SiriusCon 2015 - Breathe Life into Your Designer!
melbats
Hydrosphere.io for ODSC: Webinar on Kubeflow
Hydrosphere.io for ODSC: Webinar on Kubeflow
Rustem Zakiev
Apollo. The client we deserve
Apollo. The client we deserve
Yuri Nezdemkovski
"Production Driven Development", Serhii Kalinets
"Production Driven Development", Serhii Kalinets
Fwdays
EclipseCon France 2016 - Sirius 4.0: Let me Sirius that for you!
EclipseCon France 2016 - Sirius 4.0: Let me Sirius that for you!
melbats
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
Chris Fregly
TechEvent Graal(VM) Performance Interoperability
TechEvent Graal(VM) Performance Interoperability
Trivadis
Adopting F# at SBTech
Adopting F# at SBTech
Antya Dev
Data Centric Metaprocessing by Vlad Ulreche
Data Centric Metaprocessing by Vlad Ulreche
Spark Summit
Weitere ähnliche Inhalte
Was ist angesagt?
0 to Angular in 45 Mins
0 to Angular in 45 Mins
Craig Shoemaker
server side Swift
server side Swift
NormanSutorius
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
Chris Fregly
Boost your App with Gatling
Boost your App with Gatling
Knoldus Inc.
How to deploy machine learning models in the Cloud
How to deploy machine learning models in the Cloud
Alex Casalboni
From training to explainability via git ops
From training to explainability via git ops
Ryan Dawson
ServiceWorkerとES6 Modules時代のTypescript開発考察
ServiceWorkerとES6 Modules時代のTypescript開発考察
Taketoshi 青野健利
Net campus2015 antimomusone
Net campus2015 antimomusone
DotNetCampus
Yannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflow
MarynaHoldaieva
ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
Rajat Kumar
A Graphical Way of Thinking About React Designs
A Graphical Way of Thinking About React Designs
olafnouvortne
SPRING BOOT DANS UN CONTAINER OUTILS ET PRATIQUES
SPRING BOOT DANS UN CONTAINER OUTILS ET PRATIQUES
VMware Tanzu
The Prana IoC Container
The Prana IoC Container
Christophe Herreman
SiriusCon 2015 - Breathe Life into Your Designer!
SiriusCon 2015 - Breathe Life into Your Designer!
melbats
Hydrosphere.io for ODSC: Webinar on Kubeflow
Hydrosphere.io for ODSC: Webinar on Kubeflow
Rustem Zakiev
Apollo. The client we deserve
Apollo. The client we deserve
Yuri Nezdemkovski
"Production Driven Development", Serhii Kalinets
"Production Driven Development", Serhii Kalinets
Fwdays
EclipseCon France 2016 - Sirius 4.0: Let me Sirius that for you!
EclipseCon France 2016 - Sirius 4.0: Let me Sirius that for you!
melbats
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
Chris Fregly
TechEvent Graal(VM) Performance Interoperability
TechEvent Graal(VM) Performance Interoperability
Trivadis
Was ist angesagt?
(20)
0 to Angular in 45 Mins
0 to Angular in 45 Mins
server side Swift
server side Swift
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
Boost your App with Gatling
Boost your App with Gatling
How to deploy machine learning models in the Cloud
How to deploy machine learning models in the Cloud
From training to explainability via git ops
From training to explainability via git ops
ServiceWorkerとES6 Modules時代のTypescript開発考察
ServiceWorkerとES6 Modules時代のTypescript開発考察
Net campus2015 antimomusone
Net campus2015 antimomusone
Yannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflow
ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
A Graphical Way of Thinking About React Designs
A Graphical Way of Thinking About React Designs
SPRING BOOT DANS UN CONTAINER OUTILS ET PRATIQUES
SPRING BOOT DANS UN CONTAINER OUTILS ET PRATIQUES
The Prana IoC Container
The Prana IoC Container
SiriusCon 2015 - Breathe Life into Your Designer!
SiriusCon 2015 - Breathe Life into Your Designer!
Hydrosphere.io for ODSC: Webinar on Kubeflow
Hydrosphere.io for ODSC: Webinar on Kubeflow
Apollo. The client we deserve
Apollo. The client we deserve
"Production Driven Development", Serhii Kalinets
"Production Driven Development", Serhii Kalinets
EclipseCon France 2016 - Sirius 4.0: Let me Sirius that for you!
EclipseCon France 2016 - Sirius 4.0: Let me Sirius that for you!
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
TechEvent Graal(VM) Performance Interoperability
TechEvent Graal(VM) Performance Interoperability
Ähnlich wie Who needs MVVM? Architecture components & MVP - Timor Surkis, Colu
Adopting F# at SBTech
Adopting F# at SBTech
Antya Dev
Data Centric Metaprocessing by Vlad Ulreche
Data Centric Metaprocessing by Vlad Ulreche
Spark Summit
Data centric Metaprogramming by Vlad Ulreche
Data centric Metaprogramming by Vlad Ulreche
Spark Summit
Reactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel Architecture
Gyuwon Yi
The use case of a scalable architecture
The use case of a scalable architecture
Toru Wonyoung Choi
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019
UA Mobile
React for Re-use: Creating UI Components with Confluence Connect
React for Re-use: Creating UI Components with Confluence Connect
Atlassian
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
Fwdays
.NET Fest 2018. Антон Молдован. One year of using F# in production at SBTech
.NET Fest 2018. Антон Молдован. One year of using F# in production at SBTech
NETFest
A Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed Application
David Hoerster
Introduction to Reactive Extensions (Rx)
Introduction to Reactive Extensions (Rx)
Tamir Dresher
Advanced #6 clean architecture
Advanced #6 clean architecture
Vitali Pekelis
TensorFlow Extended: An End-to-End Machine Learning Platform for TensorFlow
TensorFlow Extended: An End-to-End Machine Learning Platform for TensorFlow
Databricks
Tsar tech talk
Tsar tech talk
Anirudh Todi
TSAR (TimeSeries AggregatoR) Tech Talk
TSAR (TimeSeries AggregatoR) Tech Talk
Anirudh Todi
Profiling Mondrian MDX Requests in a Production Environment
Profiling Mondrian MDX Requests in a Production Environment
Raimonds Simanovskis
Dive into React Performance
Dive into React Performance
Ching Ting Wu
Developer Joy - How great teams get s%*t done
Developer Joy - How great teams get s%*t done
Sven Peters
Vertical Recommendation Using Collaborative Filtering
Vertical Recommendation Using Collaborative Filtering
gorass
TypeScript for Java Developers
TypeScript for Java Developers
Yakov Fain
Ähnlich wie Who needs MVVM? Architecture components & MVP - Timor Surkis, Colu
(20)
Adopting F# at SBTech
Adopting F# at SBTech
Data Centric Metaprocessing by Vlad Ulreche
Data Centric Metaprocessing by Vlad Ulreche
Data centric Metaprogramming by Vlad Ulreche
Data centric Metaprogramming by Vlad Ulreche
Reactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel Architecture
The use case of a scalable architecture
The use case of a scalable architecture
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019
React for Re-use: Creating UI Components with Confluence Connect
React for Re-use: Creating UI Components with Confluence Connect
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
.NET Fest 2018. Антон Молдован. One year of using F# in production at SBTech
.NET Fest 2018. Антон Молдован. One year of using F# in production at SBTech
A Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed Application
Introduction to Reactive Extensions (Rx)
Introduction to Reactive Extensions (Rx)
Advanced #6 clean architecture
Advanced #6 clean architecture
TensorFlow Extended: An End-to-End Machine Learning Platform for TensorFlow
TensorFlow Extended: An End-to-End Machine Learning Platform for TensorFlow
Tsar tech talk
Tsar tech talk
TSAR (TimeSeries AggregatoR) Tech Talk
TSAR (TimeSeries AggregatoR) Tech Talk
Profiling Mondrian MDX Requests in a Production Environment
Profiling Mondrian MDX Requests in a Production Environment
Dive into React Performance
Dive into React Performance
Developer Joy - How great teams get s%*t done
Developer Joy - How great teams get s%*t done
Vertical Recommendation Using Collaborative Filtering
Vertical Recommendation Using Collaborative Filtering
TypeScript for Java Developers
TypeScript for Java Developers
Mehr von DroidConTLV
Mobile Development in the Information Age - Yossi Elkrief, Nike
Mobile Development in the Information Age - Yossi Elkrief, Nike
DroidConTLV
Doing work in the background - Darryn Campbell, Zebra Technologies
Doing work in the background - Darryn Campbell, Zebra Technologies
DroidConTLV
No more video loss - Alex Rivkin, Motorola Solutions
No more video loss - Alex Rivkin, Motorola Solutions
DroidConTLV
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
DroidConTLV
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
DroidConTLV
MVVM In real life - Lea Cohen Tannoudji, Lightricks
MVVM In real life - Lea Cohen Tannoudji, Lightricks
DroidConTLV
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
DroidConTLV
Building Apps with Flutter - Hillel Coren, Invoice Ninja
Building Apps with Flutter - Hillel Coren, Invoice Ninja
DroidConTLV
New Android Project: The Most Important Decisions - Vasiliy Zukanov
New Android Project: The Most Important Decisions - Vasiliy Zukanov
DroidConTLV
Designing a Design System - Shai Mishali, Gett
Designing a Design System - Shai Mishali, Gett
DroidConTLV
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
DroidConTLV
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
DroidConTLV
Flutter State Management - Moti Bartov, Tikal
Flutter State Management - Moti Bartov, Tikal
DroidConTLV
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
DroidConTLV
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
DroidConTLV
DroidconTLV 2019
DroidconTLV 2019
DroidConTLV
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
DroidConTLV
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
DroidConTLV
Reverse reverse engineering engineering 101 - Royi Benyossef, Samsung NEXT
Reverse reverse engineering engineering 101 - Royi Benyossef, Samsung NEXT
DroidConTLV
The Redux State of the Art - Shem Magnezi+Limor Mekaiten, WeWork
The Redux State of the Art - Shem Magnezi+Limor Mekaiten, WeWork
DroidConTLV
Mehr von DroidConTLV
(20)
Mobile Development in the Information Age - Yossi Elkrief, Nike
Mobile Development in the Information Age - Yossi Elkrief, Nike
Doing work in the background - Darryn Campbell, Zebra Technologies
Doing work in the background - Darryn Campbell, Zebra Technologies
No more video loss - Alex Rivkin, Motorola Solutions
No more video loss - Alex Rivkin, Motorola Solutions
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
MVVM In real life - Lea Cohen Tannoudji, Lightricks
MVVM In real life - Lea Cohen Tannoudji, Lightricks
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
Building Apps with Flutter - Hillel Coren, Invoice Ninja
Building Apps with Flutter - Hillel Coren, Invoice Ninja
New Android Project: The Most Important Decisions - Vasiliy Zukanov
New Android Project: The Most Important Decisions - Vasiliy Zukanov
Designing a Design System - Shai Mishali, Gett
Designing a Design System - Shai Mishali, Gett
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
Flutter State Management - Moti Bartov, Tikal
Flutter State Management - Moti Bartov, Tikal
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
DroidconTLV 2019
DroidconTLV 2019
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
Reverse reverse engineering engineering 101 - Royi Benyossef, Samsung NEXT
Reverse reverse engineering engineering 101 - Royi Benyossef, Samsung NEXT
The Redux State of the Art - Shem Magnezi+Limor Mekaiten, WeWork
The Redux State of the Art - Shem Magnezi+Limor Mekaiten, WeWork
Kürzlich hochgeladen
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
Mark Billinghurst
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
David Michel
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
CzechDreamin
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
Jennifer Lim
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
Samy Fodil
ECS 2024 Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
Femke de Vroome
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
FIDO Alliance
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
FIDO Alliance
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FIDO Alliance
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
UXDXConf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
FIDO Alliance
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
vincent683379
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
中 央社
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
IES VE
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
FIDO Alliance
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
Srushith Repakula
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
ScyllaDB
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
Kürzlich hochgeladen
(20)
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
ECS 2024 Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Who needs MVVM? Architecture components & MVP - Timor Surkis, Colu
1.
Who needs MVVM?
Architecture components & MVP!
2.
Timor Surkis |
TSurkis.com Mobile Software Engineer Fundamentals Squad & Mentor
3.
Disclaimers
4.
Prelude
5.
MVP or MVVM?
6.
MVP MyAPP
7.
MVP View Presenter Data Controller onReceived(...) GetListSize() getItem(...) onUpdate(...) onDelete(...)
8.
MVP | ListAdapter ListAdapter DiffUtil.ItemCallback<T> List<T>List<T> MyAPP
9.
View Presenter Data ControlleronReceived(...) GetListSize() getItem(...) onUpdate(...) onDelete(...) MVP
| ListAdapter
10.
MVP | LiveData LiveData<T>Observer<T> Activity
Fragment Forever Lifecycle
11.
LiveData<T> ObserverWrapper MVP | LiveData Map
of Observer<T> ObserverWrapper : GenericLifecycleObserver AlwaysActiveObserverLifecycleBoundObserver LifecycleOwner Observer<T> Observer<T>
12.
MVP | LiveData ActivityFragment*
: LifecycleOwner LifecycleRegistry LifecycleBoundObserver as LifecycleObserver ObserverWithState Map of State LifecycleObserver * FragmentActivity/ Fragment(support libraries)
13.
View loadList(data: List<T>) getLifecycleOwnerInstance() =
this MVP | LiveData
14.
DataController bindData( lifecycleOwner: LifecycleOwner, newDataBlock: (List<T>)
-> Unit ) MVP | LiveData data: MutableLiveData<T>
15.
Presenter onBusinessLogicReady() { dataController.bindData( screen.getLifeCycleOwnerInstance(), screen::loadList ) ... } MVP |
LiveData
16.
MVP | LiveData View ListAdapter DiffUtil.ItemCallback<T> List<T> DataController LiveData<T> Repository
17.
MVP MyAPP ?
18.
lifecycle aware Presenter MVP | Lifecycle onCreate onStart onResume onPause onStop onDestroy onCreate onStart onResume onPause onStop onDestroy create rotate finish ViewModel onCleared Presenter
19.
BasePresenter MVP | Lifecycle abstract
class BasePresenter<ScreenType>( protected val screen: ScreenType )
20.
BasePresenter MVP | Lifecycle abstract
class BasePresenter<ScreenType> { private var screen: WeakReference<ScreenType>? = null fun attach(screen: ScreenType) { this.screen = WeakReference(screen) } protected fun getScreen(): ScreenType? = screen?.get() }
21.
BasePresenter MVP | Lifecycle abstract
class BasePresenter<ScreenType> { private var screen: WeakReference<ScreenType>? = null fun attach(screen: ScreenType) { this.screen = WeakReference(screen) } protected fun getScreen(): ScreenType? = screen?.get() }
22.
BasePresenter MVP | Lifecycle abstract
class BasePresenter<ScreenType> { private var screen: WeakReference<ScreenType>? = null fun attach(screen: ScreenType) { this.screen = WeakReference(screen) } protected fun getScreen(): ScreenType? = screen?.get() }
23.
Activity Fragment MVP
| Lifecycle ... presenter = /* Initialization */ presenter.attach(this) ...
24.
Activity Fragment MVP
| Lifecycle ViewModelProviders .of(this, viewModelFactory) .get(SomeViewModel::class.java)
25.
MVP | Lifecycle ActivityFragment*
: ViewModelStoreOwner ViewModelStore String Map of * FragmentActivity/ Fragment(support libraries) ViewModel
26.
MVP | Lifecycle of(
),ActivityFragment Factory ViewModelProvider ViewModelStore Factory ViewModelStoreOwner .getViewModelStore()
27.
MVP | Lifecycle ViewModelProvider ViewModelStore
Factory .get(ViewModelClass)
28.
MVP | Lifecycle ViewModelProvider.Factory @NonNull <T
extends ViewModel> T create(@NonNull Class<T> modelClass);
29.
MVP | Lifecycle SimpleFactory
: ViewModelProvider.Factory override fun <T : ViewModel?> create(modelClass: Class<T>): T { when (modelClass) { QuotesPresenter::class.java -> { return QuotesPresenter(QuotesInteractor(quotesRepository)) } ... } ... }
30.
MVP | Lifecycle SimpleFactory
: ViewModelProvider.Factory override fun <T : ViewModel?> create(modelClass: Class<T>): T { when (modelClass) { QuotesPresenter::class.java -> { return QuotesPresenter(QuotesInteractor(quotesRepository)) } ... } ... }
31.
MVP | Lifecycle SimpleFactory
: ViewModelProvider.Factory override fun <T : ViewModel?> create(modelClass: Class<T>): T { when (modelClass) { QuotesPresenter::class.java -> { return QuotesPresenter(QuotesInteractor(quotesRepository)) } ... } ... }
32.
MVP | Lifecycle PresenterModule @Module abstract
class PresenterModule { @Binds @IntoMap @PresenterKey(QuotesPresenter::class) abstract fun provideQuotesViewModel( quotesViewModel: QuotesPresenter ): ViewModel ... }
33.
MVP | Lifecycle PresenterFactory
: ViewModel.Factory ViewModelClass Map of Provider<ViewModel>
34.
MVP | Lifecycle ViewModel protected
void onCleared() { }
35.
BasePresenter MVP | Lifecycle abstract
class BasePresenter<ScreenType> : ViewModel() { private var screen: WeakReference<ScreenType>? = null fun attach(screen: ScreenType) { this.screen = WeakReference(screen) } protected fun getScreen(): ScreenType? = screen?.get() }
36.
Activity Fragment MVP
| Lifecycle presenter = ViewModelProviders .of(this, presenterFactory) .get(SomePresenter::class.java) presenter.attach(this)
37.
MVP | Conclusion Regular
MVP: https://github.com/TSurkis/AppinionMVP MVP & LiveData: https://github.com/TSurkis/AppinionMVP/tree/livedata_integrat ion MVP & LiveData & Lifecycle https://github.com/TSurkis/AppinionMVP/tree/lifecycle_integrat ion_by_presenter_as_viewmodel
38.
MVVM ViewModel Repository View ?
39.
MVVM MVPMVVM M?|View|ViewModel M?|View|Presenter MVVM MVP
40.
MVVM Contract interface QuotesScreenContract
{ interface Screen { fun showProgressBar() fun hideProgressBar() fun showList() fun hideList() fun loadList(quotes: List<Quote>) } interface Presenter { ... } interface Interactor { ... } }
41.
MVVM Screen showProgressBar() hideProgressBar() showList() hideList() loadList(quotes: List<Quote>) ScreenState showProgressBar: Boolean showListOfQuotes:
Boolean LiveData<Quote>
42.
MVVM ViewModel Repository LiveData<ScreenState> LiveData<Data> View ListAdapter
43.
MVVM | Conclusion MVVM
with a touch of MVP: https://github.com/TSurkis/AppinionMVVM
44.
Conclusion
45.
Credits Medium Article: https://medium.com/@t.surkiss/architecture-components-mvp-mvvm-237eaa83109 6 Hannes Dorfman: http://hannesdorfmann.com/android/mosby3-mvi-1 MVP: https://github.com/TSurkis/AppinionMVP MVVM: https://github.com/TSurkis/AppinionMVVM Presentation
Image: https://unsplash.com/photos/3Ijt7UkSBYE
Jetzt herunterladen