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
550
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
430
How remote work redefines productivity
alexandra
0
350
Mobile testing for grown ups
alexandra
0
370
Mobile testing like you mean it
alexandra
0
47
Mobile testing for grown ups
alexandra
0
74
Error proof your mobile app
alexandra
0
140
Other Decks in Programming
See All in Programming
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
840
Fast JSX: Don't clone props object #28768
yossydev
1
130
Git Rebase
bkuhlmann
11
1.6k
雑に思考を整理する技術と効能
konifar
60
29k
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
190
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
110
TCAとKMPを用いた新規動画配信アプリ 「ABEMA Live」の設計
tomu28
1
110
Let's learn code review
riofujimon
2
430
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
210
Node.js v22 で変わること
yosuke_furukawa
PRO
9
3.5k
Git Lint
bkuhlmann
4
750
エンターテイメント業界で利用されるAWS
demuyan
0
210
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
31
46k
Building Your Own Lightsaber
phodgson
99
5.7k
The Art of Programming - Codeland 2020
erikaheidi
42
12k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Making Projects Easy
brettharned
108
5.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
The Invisible Customer
myddelton
114
12k
Art, The Web, and Tiny UX
lynnandtonic
289
19k
Six Lessons from altMBA
skipperchong
21
3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
322
20k
Visualization
eitanlees
136
14k
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