Enviar búsqueda
Cargar
Who needs MVVM? Architecture components & MVP - Timor Surkis, Colu
•
1 recomendación
•
265 vistas
DroidConTLV
Seguir
As presented in droidcon Tel Aviv 2018: http://il.droidcon.com
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 45
Descargar ahora
Descargar para leer sin conexión
Recomendados
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
Recomendados
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
Más contenido relacionado
La actualidad más candente
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
La actualidad más candente
(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
Similar a 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
Similar a 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
Más de 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
Más de 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
Último
Overview of Hyperledger Foundation
Overview of Hyperledger Foundation
Hyperleger Tokyo Meetup
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FIDO Alliance
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
GDSC PJATK
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
FIDO Alliance
Working together SRE & Platform Engineering
Working together SRE & Platform Engineering
Marcus Vechiato
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
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
Lorenzo Miniero
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
FIDO Alliance
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
FIDO Alliance
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
Patrick Viafore
AI mind or machine power point presentation
AI mind or machine power point presentation
yogeshlabana357357
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
Mark Opanasiuk
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
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
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
ScyllaDB
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Skynet Technologies
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
Srushith Repakula
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
Samy Fodil
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
FIDO Alliance
Último
(20)
Overview of Hyperledger Foundation
Overview of Hyperledger Foundation
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Working together SRE & Platform Engineering
Working together SRE & Platform Engineering
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
AI mind or machine power point presentation
AI mind or machine power point presentation
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
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...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
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
Descargar ahora