App架构设计经验谈:业务层的设计

原文出处: Keegan小钢   android

业务层其实并不复杂,可是大部分开发人员对其职责并无理解清楚,从而使其沦落为一个数据中转站。我以前分享过的Android项目重构之路系列中提到的核心层,其实就是这里所讲的业务层。但有很多读者反映,他们在实际项目中就只是作一下参数检查,而后直接调用API,与展现层对接的接口基本也与API的接口一致的。这样,业务层无疑就已经变为了一个数据中转站。编程

业务层的职责

因此,设计业务层以前,对业务层的职责要先真正理解清楚。这里,我举两个栗子说明一下。缓存

第一个是新用户注册的例子。注册时,界面上通常都会要求用户输入手机号、验证码、密码和确认密码。可是,API接口通常只会有三个参数:手机号、验证码和密码,不会有确认密码。所以,调用接口以前,密码和确认密码的一致性检查是必须的。同时,也要检查这些数据是否为空、手机号是否符合规范、验证码是否有效、密码有没有包含了特殊字符等。正确姿式就是当全部检查都经过了以后,才调用API接口。最后,调用注册接口成功后,可能还要再调用一次登陆接口,并可能将用户登陆信息缓存起来,方便用户下次启动应用时自动登陆。全部这些都属于业务逻辑处理,也就是业务层的工做。网络

第二个是涉及用户验证的例子。好比,在一个电商App,当用户浏览某个商品,点击购买时,App首先会判断用户是否已经登陆,如未登陆,则会跳转到登陆页面让用户先登陆。若是已经登陆,但token已通过期,那须要先去获取新的token,以后才能进行下一步的购物操做。这些逻辑处理,也是业务层的工做。架构

所以,简单点说,业务层就是处理业务逻辑,包括数据的检查、业务分支的处理等。好比上面第二个例子,可能不少人就会将用户是否已经登陆的判断直接在界面上作处理,当确认登陆后,token也是有效的以后,才调用业务层作购买商品的操做,这就是致使业务层沦落为API的数据中转站的直接表现。异步

业务层的交互

只有真正理解了业务层的职责以后,才能有效地设计业务层与外层的交互接口。post

业务层向下,与数据层交互;向上,与展现层交互。网站

与数据层交互只是调用数据层的接口获取数据,而与展现层交互则须要提供接口给展现层调用。由于业务处理通常属于比较耗时的操做,主要在于底层的网络请求比较耗时,因此提供给展现层的接口数据结果应该以异步的方式提供,所以,接口上就须要提供个回调参数,返回业务处理以后的结果。我以前分享过的Android项目重构之路:实现篇有讲到一种实现方式,可参考。spa

写在最后

业务层能够说是一个数据加工场,处理核心的业务逻辑。其实,只要理解清楚了业务层的职责,业务层就不难实现。设计

问啊-定制化IT教育平台,牛人一对一服务,有问必答,开发编程社交头条 官方网站:www.wenaaa.com 下载问啊APP,参与官方悬赏,赚百元现金。

QQ群290551701 汇集不少互联网精英,技术总监,架构师,项目经理!开源技术研究,欢迎业内人士,大牛及新手有志于从事IT行业人员进入!

相关文章
相关标签/搜索