Android架构师:你的业务代码,Android小技巧

又假设产品里有一个地方需要**“拉取用户信息”**,也将把“登录Activity”里“拉取用户信息”的代码复制一遍。

封装复用的道理谁都懂,拷贝代码的坏处也谁都明白,那为什么大家还这么做,代码越来越“腐烂”呢?

根据个人经验,主要是这么几点原因:

(1)早期业务压力大,APP是少数几个同学的,没有提前做规划;

(2)后期代码越来越臃肿,不敢动,一动怕影响功能,怕出问题,怕担责任;

(3)项目中,是以功能界面进行编码划分的,一个同学会同时负责MVC三部分编码,加之项目压力又大,既然是一个人写,就没必要分层了,搞多了调用反而麻烦;

(4)项目中,有个需求好像之前做过,代码一看,写在Activity里,纠结。抽象成函数?还得改别人的代码,算了,还是拷贝一份吧;

(5)…

不管历史原因,项目原因,个人的原因,大家都知道分层抽象,代码复用是正确的,那有什么方案能够将这个分层抽象落地,从后端的分层架构中是否有可借鉴的地方呢?

一个典型业务系统的后端架构如上:

(1)web-server层调用RPC接口,从service层获取数据,拼装html/json,完成数据展现;

(2)biz-service/data-service向上游提供可复用的原子接口,实现业务逻辑,并通过DAO层,从db层获取数据;

(3)db层提供数据;

APP端的分层架构不是非常相似么?

还是以登录业务为例:

(1)登录Activity有两个按钮,一个确认按钮,一个取消按钮,这两个按钮的点击,分别只能调用一个函数:

  • on_LoginConfirm_Click

  • on_LoginCancel_Click

这里相当于展现层,除了交互与展现,View层只能调用这两个函数。

(2)这两个函数的实现,是通过若干可复用的“原子业务逻辑”函数实现的:

  • 验证用户名密码:bool verifyPass(name, pass)

  • 拉取好友列表:ListgetFriendList(uid)

  • 拉取用户信息:Use rgetUserInfo(uid)

  • 拉取好友信息:ListgetUserInfo(List<f_uid>)

  • 拉取离线消息:ListgetOfflineMst(uid)

这相当于服务层,实现业务逻辑,提供封装和复用

(3)“原子业务逻辑”函数执行的过程中,需要访问数据,数据的获取又分为两类:

  • 同步获取:通过文件,内存,本地数据库获取

  • 异步获取:从server获取,往往通过回调实现

这里相当于数据层,向上游屏蔽数据获取的复杂性,分别用不同的Proxy去实现。

在这种结构下:

(1)展现层非常轻,只调用一个函数,用于展现数据;

(2)“原子业务逻辑”可以复用,不同的展现层Activity可以随意组合,实现不同的业务逻辑,用于处理数据;

(3)Proxy对上游屏蔽的数据获取的复杂性,向上游提供数据获取接口,用于获取数据;

分层架构封装复用的思想,前后端有共通的地方。

Activity里一坨坨复杂的代码,也是你曾经的痛么?

最后

==============================================================

在这里就还分享一份由大佬亲自收录整理的Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。

当然,你也可以拿去查漏补缺,提升自身的竞争力。

真心希望可以帮助到大家,Android路漫漫,共勉!

如果你有需要的话,只需 点击这里快速免费获取

本文转自 https://blog.csdn.net/River_ly/article/details/119256760,如有侵权,请联系删除。

最后的最后

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的

应环境,而不是环境来适应我们!**

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的

[外链图片转存中…(img-C6izDEno-1630917808664)]

最后,互联网不存在所谓的寒冬,只是你没有努力罢了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值