MobiledesignpatternsAlexandra Marin @ ITAKE Unconference 2017@xmonodevcrossplatform.io
View Slide
Hello!{ }#mobile #designpatterns #itakeunconfcrossplatform.io
Design codethat runscross-platform{ crossplatform.io }#mobile #designpatterns #itakeunconfcrossplatform.io
Overview{ crossplatform.io }#mobile #designpatterns #itakeunconfcrossplatform.io
The mobileproblem{ crossplatform.io }#mobile #designpatterns #itakeunconf
Target universalfeatures{ crossplatform.io }#mobile #designpatterns #itakeunconf
Enhance experiencebased ondevice capabilities{ crossplatform.io }#mobile #designpatterns #itakeunconf
Platform-independentcode with Xamarin{ crossplatform.io }#mobile #designpatterns #itakeunconf
Platform-specificcode with Xamarin{ crossplatform.io }#mobile #designpatterns #itakeunconf
Case study #1:Different capabilitiesCase study #2:Different platform{ crossplatform.io }#mobile #designpatterns #itakeunconf
Taking aselfie#mobile #designpatterns #itakeunconfcrossplatform.io
{ crossplatform.io }#mobile #designpatterns #itakeunconfFacadedesign patterncrossplatform.io
//On platformif(deviceHasCamera){//Take photo via Camera app//Apply resizing//Save it via File Manager}else{//Choose from gallery}{ crossplatform.io }#mobile #designpatterns #itakeunconfcrossplatform.io
{ crossplatform.io }#mobile #designpatterns #itakeunconf//Shared codecamera.ReturnPhoto();crossplatform.io
Save thedate#mobile #designpatterns #itakeunconfcrossplatform.io
Bridgedesign pattern{ crossplatform.io }#mobile #designpatterns #itakeunconfcrossplatform.io
{ crossplatform.io }#mobile #designpatterns #itakeunconf//Shared codeclass MyCalendar{ICalendar calendar;void SaveTheDate(){calendar.AddEvent();}}crossplatform.io
{ crossplatform.io }#mobile #designpatterns #itakeunconf//iOSiOSCalendar : ICalendar{AddEvent(){//add event with//EventKit}}crossplatform.io
{ crossplatform.io }#mobile #designpatterns #itakeunconf//AndroidDroidCalendar : ICalendar{AddEvent(){//add event with//CalendarContract}}crossplatform.io
Inversionof Control{ crossplatform.io }#mobile #designpatterns #itakeunconf
Servicelocator{ crossplatform.io }#mobile #designpatterns #itakeunconf
//Construct on platformLocator.RegisterType();//Use in shared codeLocator.Resolve();{ }#mobile #designpatterns #itakeunconf{ crossplatform.io }
Dependencyinjection{ crossplatform.io }#mobile #designpatterns #itakeunconf{ crossplatform.io }
{ crossplatform.io }#mobile #designpatterns #itakeunconf//Construct on platformIoC.RegisterType();//Gets injected in sharedclass constructorpublic SharedClass(ICalendarcameraHelper){ crossplatform.io }
Summary{ crossplatform.io }#mobile #designpatterns #itakeunconf{ crossplatform.io }crossplatform.io
Ask Me Anythingcrossplatform.ioor @xmonodev{ crossplatform.io }#mobile #designpatterns #itakeunconf{ crossplatform.io }crossplatform.io