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
770
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
570
How remote work redefines productivity
alexandra
0
500
Mobile testing for grown ups
alexandra
0
530
Mobile testing like you mean it
alexandra
0
120
Mobile testing for grown ups
alexandra
0
140
Error proof your mobile app
alexandra
0
220
Other Decks in Programming
See All in Programming
仕様駆動開発の消費期限
watany
20
8.9k
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.4k
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
170
MySQLとPostgreSQLって何が違うの?
akagami
0
130
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
360
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
200
承認済みなのに差戻しできてしまうバグ、型で潰せます
shinchit
0
100
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.1k
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
350
Press start. Python's next generation.
willingc
PRO
2
100
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
360
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
420
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Odyssey Design
rkendrick25
PRO
2
770
Balancing Empowerment & Direction
lara
6
1.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Writing Fast Ruby
sferik
630
63k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
390
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
450
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
How to train your dragon (web standard)
notwaldorf
97
6.8k
The Curious Case for Waylosing
cassininazir
1
480
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