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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Alexandra Tritz
May 23, 2019
Programming
56
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
43
Rethinking BlaBlaCar's app architecture
alexandratritz
0
350
Feature Flags on Android At BlaBlaCar
alexandratritz
1
340
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
Android CLI
fornewid
0
200
What's New in Android 2026
veronikapj
0
240
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.7k
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
3.4k
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
190
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
630
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
240
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
170
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.5k
AIが無かった頃の素敵な出会いの話
codmoninc
1
340
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
390
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
24k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
380
Building Applications with DynamoDB
mza
96
7.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Designing for Performance
lara
611
70k
YesSQL, Process and Tooling at Scale
rocio
174
15k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Un-Boring Meetings
codingconduct
0
360
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