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
61
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
46
Rethinking BlaBlaCar's app architecture
alexandratritz
0
350
Feature Flags on Android At BlaBlaCar
alexandratritz
1
350
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
リアルな遅延を測る仕様
kota_yata
1
120
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
250
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
2
1k
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
100
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7.7k
My Marp Sample
sinoue0108
0
110
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
240
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
200
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
720
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
1
380
AIの中の人になってみる
htkym
0
110
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
280
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
290
GitHub's CSS Performance
jonrohan
1033
470k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
940
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
380
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