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
610
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
480
How remote work redefines productivity
alexandra
0
400
Mobile testing for grown ups
alexandra
0
420
Mobile testing like you mean it
alexandra
0
48
Mobile testing for grown ups
alexandra
0
79
Error proof your mobile app
alexandra
0
140
Other Decks in Programming
See All in Programming
CSC307 Lecture 07
javiergs
PRO
0
220
20240706_CDKConf
takuyay0ne
0
1.2k
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
140
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
81k
小さな開発会社を作った理由
polidog
0
1.9k
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.9k
企業向け生成AIアプリの 開発から得られた知見
takaakikakei
0
310
GraphQL はいいぞ! ~Laravel で学ぶ GraphQL 入門~
azuki
1
160
Advanced App Shrinking Techniques
cbeyls
2
150
【Go言語】golangci-lintの使い方
tomo1227
0
280
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
190
Clean Architecture by TypeScript & NestJS
ryounasso
0
150
Featured
See All Featured
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
How GitHub (no longer) Works
holman
305
140k
The Straight Up "How To Draw Better" Workshop
denniskardys
229
130k
Into the Great Unknown - MozCon
thekraken
20
1.3k
For a Future-Friendly Web
brad_frost
173
9.2k
Building Adaptive Systems
keathley
34
2k
KATA
mclloyd
20
13k
Music & Morning Musume
bryan
43
5.9k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
How GitHub Uses GitHub to Build GitHub
holman
471
290k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
Building an army of robots
kneath
301
42k
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