Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Relationship between MVPs
Search
Alexandra Tritz
May 23, 2019
Programming
53
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Relationship between MVPs
Alexandra Tritz
May 23, 2019
More Decks by Alexandra Tritz
See All by Alexandra Tritz
Firebase : Remote config & A/B testing
alexandratritz
0
42
Rethinking BlaBlaCar's app architecture
alexandratritz
0
340
Feature Flags on Android At BlaBlaCar
alexandratritz
1
330
Analytics & Monitoring at BlaBlaCar
alexandratritz
0
520
Développer une app Android en 2015
alexandratritz
3
550
Other Decks in Programming
See All in Programming
ふつうのFeature Flag実践入門
irof
7
3.9k
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
250
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
620
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.1k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
340
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
550
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
140
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
400
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
180
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
Code Reviewing Like a Champion
maltzj
528
40k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
190
The Curious Case for Waylosing
cassininazir
1
390
Claude Code のすすめ
schroneko
67
230k
Bash Introduction
62gerente
615
220k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Transcript
None
Alexandra TRITZ Laurent RUSSIER
None
TheFork Focus PVVP Listeners EventBus Listeners & Interactors Menu
None
None
TheFork 60,000 restaurants in 18 countries 14 million reviews +21
million monthly visits +16 million app downloads
TheFork team 6 android devs in 2 countries 1 shared
PO 5 iOS devs design team shared
None
TheFork
TheFork
TheFork
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
RestaurantListPresenter.kt class RestaurantListPresenterImpl : RestaurantListPresenter { fun onScroll(lastItemViewed: Int) {
restaurantListListener?.onScrolled(lastItemViewed) // internal logic } } MapPresenterImpl.kt class MapPresenterImpl : MapPresenter { fun onClickPin(pinClicked: Int) { mapListener?.onClickPin(pinClicked) // internal logic } }
RestaurantListPresenter.kt class RestaurantListPresenterImpl : RestaurantListPresenter { fun onScroll(lastItemViewed: Int) {
restaurantListListener?.onScrolled(lastItemViewed) // internal logic } } MapPresenterImpl.kt class MapPresenterImpl : MapPresenter { fun onClickPin(pinClicked: Int) { mapListener?.onClickPin(pinClicked) // internal logic } }
RestaurantListInteractor.kt interface RestaurantListInteractor { fun highlightRestaurantCard(restaurantIndex: Int) } MapInteractor.kt interface
MapInteractor { fun highlightPin(restaurantIndex: Int) }
RestaurantListInteractor.kt interface RestaurantListInteractor { fun highlightRestaurantCard(restaurantIndex: Int) } MapInteractor.kt interface
MapInteractor { fun highlightPin(restaurantIndex: Int) }
SearchPresenterImpl.kt class SearchPresenterImpl @Inject constructor( private val view: SearchView :
SearchPresenter, RestaurantListListener, MapListener { private var restaurantListInteractor: RestaurantListInteractor? = null private var mapInteractor: MapInteractor? = null override fun onScrolled(restaurantIndex: Int) { mapInteractor?.highlightPin(restaurantIndex) } override fun onClickPin(restaurantIndex: Int) { restaurantListInteractor?.highlightRestaurantCard(restaurantIndex) } }
SOLID PRINCIPLE S O L I D
None
None
None
None
None
None
Conclusion
THANK YOU !
QUESTIONS ?
Alexandra Tritz & Laurent Russier