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
750
0
Share
Mobile design patterns
Alexandra Marin
May 11, 2017
More Decks by Alexandra Marin
See All by Alexandra Marin
Programming language trends as shown by job postings
alexandra
0
560
How remote work redefines productivity
alexandra
0
490
Mobile testing for grown ups
alexandra
0
530
Mobile testing like you mean it
alexandra
0
120
Mobile testing for grown ups
alexandra
0
130
Error proof your mobile app
alexandra
0
210
Other Decks in Programming
See All in Programming
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
4
400
Terraform言語の静的解析 / static analysis of Terraform language
wata727
1
130
WebAssembly を読み込むベストプラクティス 2026年春版 / Best Practices for Loading WebAssembly (Spring 2026)
petamoriken
5
1k
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
0
730
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
4
450
PHPer、Cloudflare に引っ越す
suguruooki
1
130
Vibe NLP for Applied NLP
inesmontani
PRO
0
570
「Linuxサーバー構築標準教科書」を読んでみた #ツナギメオフライン.7
akase244
0
1.4k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyKaigi 2026, Hakodate, Japan
marcoroth
0
610
JAWS-UG横浜 #100 祝・第100回スペシャルAWS は VPC レスの時代へ
maroon1st
0
210
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
970
ソフトウェア設計の結合バランス #phperkaigi
kajitack
0
480
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
530
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
190
How to build a perfect <img>
jonoalderson
1
5.5k
Technical Leadership for Architectural Decision Making
baasie
3
350
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
A Soul's Torment
seathinner
6
2.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
140
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Utilizing Notion as your number one productivity tool
mfonobong
4
300
Making Projects Easy
brettharned
120
6.6k
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