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
Mobile design patterns
Search
Alexandra Marin
May 11, 2017
Programming
0
720
Mobile design patterns
Alexandra Marin
May 11, 2017
Tweet
Share
More Decks by Alexandra Marin
See All by Alexandra Marin
Programming language trends as shown by job postings
alexandra
0
550
How remote work redefines productivity
alexandra
0
470
Mobile testing for grown ups
alexandra
0
500
Mobile testing like you mean it
alexandra
0
87
Mobile testing for grown ups
alexandra
0
110
Error proof your mobile app
alexandra
0
190
Other Decks in Programming
See All in Programming
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
1
200
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
460
React 使いじゃなくても知っておきたい教養としての React
oukayuka
18
5.6k
AIのメモリー
watany
13
1.4k
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
1
260
生成AI、実際どう? - ニーリーの場合
nealle
0
100
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
590
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
3
860
自作OSでDOOMを動かしてみた
zakki0925224
1
1.3k
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
450
新しいモバイルアプリ勉強会(仮)について
uetyo
1
260
Comparing decimals in Swift Testing
417_72ki
0
170
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Measuring & Analyzing Core Web Vitals
bluesmoon
8
550
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Building Adaptive Systems
keathley
43
2.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Code Review Best Practice
trishagee
69
19k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Navigating Team Friction
lara
188
15k
Git: the NoSQL Database
bkeepers
PRO
431
65k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Unsuck your backbone
ammeep
671
58k
Transcript
Mobile design patterns Alexandra Marin @ ITAKE Unconference 2017 @xmonodev
crossplatform.io
Hello! { } #mobile #designpatterns #itakeunconf crossplatform.io
Design code that runs cross-platform { crossplatform.io } #mobile #designpatterns
#itakeunconf crossplatform.io
Overview { crossplatform.io } #mobile #designpatterns #itakeunconf crossplatform.io
The mobile problem { crossplatform.io } #mobile #designpatterns #itakeunconf
Target universal features { crossplatform.io } #mobile #designpatterns #itakeunconf
Enhance experience based on device capabilities { crossplatform.io } #mobile
#designpatterns #itakeunconf
Platform-independent code with Xamarin { crossplatform.io } #mobile #designpatterns #itakeunconf
Platform-specific code with Xamarin { crossplatform.io } #mobile #designpatterns #itakeunconf
Case study #1: Different capabilities Case study #2: Different platform
{ crossplatform.io } #mobile #designpatterns #itakeunconf
Taking a selfie #mobile #designpatterns #itakeunconf crossplatform.io
{ crossplatform.io } #mobile #designpatterns #itakeunconf Facade design pattern crossplatform.io
//On platform if(deviceHasCamera) { //Take photo via Camera app //Apply
resizing //Save it via File Manager } else { //Choose from gallery } { crossplatform.io } #mobile #designpatterns #itakeunconf crossplatform.io
{ crossplatform.io } #mobile #designpatterns #itakeunconf //Shared code camera.ReturnPhoto(); crossplatform.io
Save the date #mobile #designpatterns #itakeunconf crossplatform.io
Bridge design pattern { crossplatform.io } #mobile #designpatterns #itakeunconf crossplatform.io
{ crossplatform.io } #mobile #designpatterns #itakeunconf //Shared code class MyCalendar
{ ICalendar calendar; void SaveTheDate() { calendar.AddEvent(); } } crossplatform.io
{ crossplatform.io } #mobile #designpatterns #itakeunconf //iOS iOSCalendar : ICalendar
{ AddEvent() { //add event with //EventKit } } crossplatform.io
{ crossplatform.io } #mobile #designpatterns #itakeunconf //Android DroidCalendar : ICalendar
{ AddEvent() { //add event with //CalendarContract } } crossplatform.io
Inversion of Control { crossplatform.io } #mobile #designpatterns #itakeunconf
Service locator { crossplatform.io } #mobile #designpatterns #itakeunconf
//Construct on platform Locator.RegisterType <ICalendar, iOSCalendar>(); //Use in shared code
Locator.Resolve<ICalendar>(); { } #mobile #designpatterns #itakeunconf { crossplatform.io }
Dependency injection { crossplatform.io } #mobile #designpatterns #itakeunconf { crossplatform.io
}
{ crossplatform.io } #mobile #designpatterns #itakeunconf //Construct on platform IoC.RegisterType
<ICalendar, iOSCalendar>(); //Gets injected in shared class constructor public SharedClass(ICalendar cameraHelper) { crossplatform.io }
Summary { crossplatform.io } #mobile #designpatterns #itakeunconf { crossplatform.io }
crossplatform.io
Ask Me Anything crossplatform.io or @xmonodev { crossplatform.io } #mobile
#designpatterns #itakeunconf { crossplatform.io } crossplatform.io