站点图标 江湖人士

XamarinForms 设计模式

XamarinForms 设计模式

刚过去的一年里从 Xamarin.Native 逐渐转向到了 Xamarin.Forms 的开辟上,一年的时间里赶着做项目,针对分歧的功能以及 UI结果 查找并利用了一些第三方的 plugin,在之前的博客中更多的也是分享 Plugin、SDK、Features 相关的内容,本年的第一篇博客想针对我在现实项目中利用到的一些设想模式以及框架来总结阐发一下。

留意事项:我是从一个挪动使用法式的开辟人员的角度出发的,在这里没有开辟出任何新的模式,更多的是若何将它们用于 Xamarin Forms 的现实开辟中的。

在我们现实开辟一个项目时,总会有一些给定的架构和项目设置,起首我们假设这些工具都没有被利用,之后说到的模式都基于以下设置:

Xamarin.Forms 从最起头设想的时候就利用了MVVM这种设想模式,并利用这种设想模式建立了大部门的功能块。例如:在进行 UI搭建 的时候,Xamarin.Forms 给我们供给了 XAML 如许的结构体例,在 XAML 中我们凡是会利用 Binding 的体例,将页面上的控件的一些属性或者方式拿到 ViewModel 中来,此中这种 Binding 的体例就是MVVM 设想模式的表现。

可是对于真正利用这种设想模式进行开辟时候,其实仍是有一些设想思惟以及方式的。对于MVVM跟MVC在布局分层上根基分歧—— M(Model), V(View), ViewModel(Controller),同时对于 Xamarin.Forms 中我们在MVVM这三层架构的根本上添加两层布局—— Repository ( Api 或 当地数据库 ), Service( 利用 repositories ),通过这两层布局我们能很好将数据交互这部门的操作笼统分手出来,同时对于数据这部门能够零丁进行单位测试。

同时在 MVVM 中的 Model 能够连结形态和操作,这里 Model 不代表数据库中的数据布局模子,也不等于 API 前往的数据布局类型,其素质代表这我们的营业逻辑,而 ViewModel 就是作为中介进行如许一个转换的过程。

Service 作为办事器和 App 的桥梁,其最焦点的感化就是数据传送。举一个最简单的例子:太大都的 App 都支撑离线操作,可是这需要当地的数据存储与API前往的办事器的内容连结同步,当 App 响使用户对于数据的操作并完成整个过程后, App 本身时不会去关怀同步数据,但这倒是Service 在此中跟办事器数据库进行传送的成果。

在 Xamarin.Forms 中我们除了利用 MVVM 对代码进行分层之外,凡是还会利用代办署理模式来进行解耦。通过在项目中建立一个接口以及响应的实现类,然后供给响应的依赖关系后后将其毗连起来。例如,我建立了一个接口 INavigationService 并实现了 Push 和 Pop 两个方式,而这个布局的实现类 NavigationService 接管 Xamarin.Forms.NavigationPage 作为机关函数参数,然后实现响应的功能。同时这个接口我们同样能够在其它项目中进行利用,以达到分手依赖关系的目标。

ViewModels 凡是包含用户交互的操作,这些操作的处置中需要包含从毗连超时的处置、参数错误和办事器错误的处置,并提示用户发生了什么,凡是这段代码会变得繁重,同时也包罗 try / catch 内部对于毗连超时的实在操作,可能还有更多。利用分手操作这种思惟后,别离供给各类环境下所需的操作,然后选择前往能否导航或向用户显示某些内容的成果。因为操作是完全独立的,同时还能够分隔进行测试。

在Xamarin.Forms中利用MVVM这种设想模式,能很好的将UI与我们的营业逻辑进行分层,对于整个开辟、测试以及后期维护上来说都能供给很大的协助:

数据绑定和号令绑定供给了将 UI 毗连到 View Model 的方式。

便利开辟人员设想工作流程。当 UI XAML 不与代码躲藏慎密连系时,设想人员能够独立工作。

添加了使用法式的可测性,将 UI逻辑 挪动到可独立于 UI手艺 进行实例化的零丁类中,使得 UITest 变得愈加容易。将营业逻辑在零丁的类中进行实现,使得 UNitTest 变得愈加间接。

到这里Xamarin.Forms 中利用的一些设想模式和思惟就完成了,但愿能对您有所协助。

退出移动版