纠纷奇闻作文社交美文家庭
聚热点
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

Android架构师你的业务代码,是不是都写在了Activi

3月19日 长歌行投稿
  作者:58沈剑
  互联网分层架构演进有两条核心原则:
  (1)让上游更高效的获取与处理数据(复用);
  (2)让下游能屏蔽数据的获取细节(封装);
  数据从数据库缓存层,到微服务层,到站点应用层,最终都汇聚到客户端。服务端的分层架构设计已经讲了很多,客户端的分层架构设计应该怎么玩呢,服务端的分层架构设计是否有能够借鉴的地方呢,今天和大家简单聊一聊。
  先来看小诗一首:
  《Android猿》
  曾经
  所有代码
  都被写在Activity里
  几乎
  没有代码
  可以复用
  每当
  看到Activity里
  2000行的函数
  我就
  想要离职
  上面,是团队中一个文艺Android程序员的自述,表达的核心观点是:几乎所有代码都写在了Activity里(不理解Activity的,暂且认为是MVC里的view层),完全没有封装和复用。
  假设一个具体的例子,微信登录的界面,点击登录按钮,此时可能要执行:
  (1)验证用户名密码;
  (2)拉取好友列表;
  (3)拉取用户信息;
  (4)拉取好友信息;
  (5)拉取离线消息;
  (6)。。。
  画外音:那个大月亮的画面,要卡很久。
  如果把这些都写在微信登录Activity里,会发现一些很严重的问题:
  (1)登录整个逻辑不能复用;
  (2)登录过程中的每个子逻辑也无法复用;
  假设产品里有一个离线后重新登录的功能,步骤与登录相同,就需要把上述在重新登录Activity里代码复制一遍。
  又假设产品里有一个地方需要拉取用户信息,也将把登录Activity里拉取用户信息的代码复制一遍。
  封装复用的道理谁都懂,拷贝代码的坏处也谁都明白,那为什么大家还这么做,代码越来越腐烂呢?
  根据个人经验,主要是这么几点原因:
  (1)早期业务压力大,APP是少数几个同学的,没有提前做规划;
  (2)后期代码越来越臃肿,不敢动,一动怕影响功能,怕出问题,怕担责任;
  (3)项目中,是以功能界面进行编码划分的,一个同学会同时负责MVC三部分编码,加之项目压力又大,既然是一个人写,就没必要分层了,搞多了调用反而麻烦;
  (4)项目中,有个需求好像之前做过,代码一看,写在Activity里,纠结。抽象成函数?还得改别人的代码,算了,还是拷贝一份吧;
  (5)
  不管历史原因,项目原因,个人的原因,大家都知道分层抽象,代码复用是正确的,那有什么方案能够将这个分层抽象落地,从后端的分层架构中是否有可借鉴的地方呢?
  一个典型业务系统的后端架构如上:
  (1)webserver层调用RPC接口,从service层获取数据,拼装htmljson,完成数据展现;
  (2)bizservicedataservice向上游提供可复用的原子接口,实现业务逻辑,并通过DAO层,从db层获取数据;
  (3)db层提供数据;
  APP端的分层架构不是非常相似么?
  还是以登录业务为例:
  (1)登录Activity有两个按钮,一个确认按钮,一个取消按钮,这两个按钮的点击,分别只能调用一个函数:
  onLoginConfirmClick
  onLoginCancelClick
  这里相当于展现层,除了交互与展现,View层只能调用这两个函数。
  (2)这两个函数的实现,是通过若干可复用的原子业务逻辑函数实现的:
  验证用户名密码:boolverifyPass(name,pass)
  拉取好友列表:ListgetFriendList(uid)
  拉取用户信息:UsergetUserInfo(uid)
  拉取好友信息:ListgetUserInfo(List)
  拉取离线消息:ListgetOfflineMst(uid)
  这相当于服务层,实现业务逻辑,提供封装和复用
  (3)原子业务逻辑函数执行的过程中,需要访问数据,数据的获取又分为两类:
  同步获取:通过文件,内存,本地数据库获取
  异步获取:从server获取,往往通过回调实现
  这里相当于数据层,向上游屏蔽数据获取的复杂性,分别用不同的Proxy去实现。
  在这种结构下:
  (1)展现层非常轻,只调用一个函数,用于展现数据;
  (2)原子业务逻辑可以复用,不同的展现层Activity可以随意组合,实现不同的业务逻辑,用于处理数据;
  (3)Proxy对上游屏蔽的数据获取的复杂性,向上游提供数据获取接口,用于获取数据;
  分层架构封装复用的思想,前后端有共通的地方。
  Activity里一坨坨复杂的代码,也是你曾经的痛么?
  最后
  在这里就还分享一份由大佬亲自收录整理的Android学习PDF架构视频面试文档源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
  这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。
  当然,你也可以拿去查漏补缺,提升自身的竞争力。
  真心希望可以帮助到大家,Android路漫漫,共勉!
  如果你有需要的话,只需私信我【进阶】即可获取
投诉 评论 转载

苹果秋季发布会敲定9月14日?这款全新智能手表却是最大看点之近段时间,关注最多的要属苹果9月份的秋季发布会了吧!我们都知道以往苹果秋季发布会,除了带来全新手机外,还会发布iPad、Watch等多款产品,那么今天我们就来聊聊全新的Appl……为什么手机大厂纷纷加入笔记本行业?偶然还是必然?最近,又一手机大厂推出了自家的轻薄本realmeBook,这款产品首销5秒内,就将销售额拉到千万元级别,可谓十分壮观。i51135G78G512SSD的版本4299元;i……Win10自带一键重装功能怎么样?当您使用计算机时,您遇到了一些难以解决的问题,通常使用系统重新加载解决方法。但仍有许多用户不知道如何重新加载系统。事实上,Win10配有一键式加固功能。让我们来看看Win10的……除了美的格力,又一家电企业布局新能源汽车,2030年要卖502021年7月底,创维汽车EV6正式发布上市,共有4个版本(出行、标准、智能、PRO),续航里程覆盖410公里和520公里,同时可选配600公里续航,售价区间为15。2824。……VIVOIQOO82021年8月17日,VIVOIQOO旗舰手机新品iQOO8系列发布。主要分为IQOO8和IQOO8PRO,其中IQOO8搭配有8GB128GB和12GB256GB,IQOO8……中文代码快速补全VSCode插件尝鲜在现有编程语言中用中文命名标识符(变量、方法、类名等等)的一个常被鞭策的短板,是需要时常切换中英文。即使有中文输入下使用英文标点这样的输入法选项,代码中仍有相当比例的英文关键字……macOSMonterey12。2正式版重大更新!修补13项macOS12。01更新以来问题不断很多小伙版都在等新版本,经过一个多月的反复测试苹果带来了12。2正式版更新,macOSMonterey以来的第二次重大更新!改进了新款机型P……138页PDF文档,带你学习一下kubernetes实战案例当Docker成为流行趋势之后,Kubernetes获得快速发展,成为最常用的容器编排工具。国外的Google,Amazon,国内的阿里、腾讯、华为等,越来越多的知名公司……第四代嘉华国产上市,起亚品牌向上再落一子9月13日,东风悦达起亚品牌焕新后的首款全球旗舰MPV第四代嘉华在时尚之都上海上市,共推出4款车型,官方指导价为28。89万元33。99万元,还带来了包括30天品质无忧承诺、5……老年人有必要戴助听器吗?为什么?老年聋常表现为:听力下降(耳背);听力渐进性下降,或由于重病、麻醉等原因听力突然下降;能听见声音,但不知道在说什么;辨别方向的能力下降;60的耳背老人还伴有耳鸣。日常生活中,老……Android架构师你的业务代码,是不是都写在了Activi作者:58沈剑互联网分层架构演进有两条核心原则:(1)让上游更高效的获取与处理数据(复用);(2)让下游能屏蔽数据的获取细节(封装);数据从数据库缓存层……启蒙教育app哪个好,儿童启蒙教育首推这两款怎么给宝宝启蒙教育一直都是现在人的难题,现在家长可不想自己孩子输在起跑线上,所以各种启蒙教育APP接踵而至,英语,识字,数字等等都成了各大宝爸宝妈的必下APP。那如何才能选到实……
Model3一年半时间降价近8万,特斯拉副总裁6天6次回应提前曝光,奇瑞新能源S61将搭载华为鸿蒙车机系统特斯拉上海工厂一周年,马斯克将宣布ModelY国产监管变严,一些快递员为何就是不送货上门?女孩招聘父亲电磁摇杆超长寿命手柄按键,2021年E3展会上谷粒科技猛料不特斯拉欧洲工厂明年7月开始投产,初期产能超上海工厂工信部11月新能源汽车销量同比增长104。9恒大宣布造车提速,发布恒驰AVP自动泊车系统拥有L4级功能韩国将投资1。1万亿韩元研发自动驾驶,以实现L4级别自动驾驶疯狂涨价与利润飙升,驱动IC厂这样挣钱?英特尔需将计算力提升1000倍才能实现元宇宙
享受孤独读后感凉拌土豆片人类有多小?飞了229。8亿公里的飞船,一张照片令人惊讶热议 你的备忘录中有哪些短句子?医学科普肾上腺疾病之一原发性醛固酮增多VS高血压唐皇陛下送三藏滴礼物ZUI美婴儿车,一眼定情系列韩国恩沙是大品牌护肤品吗爱因斯坦大脑开发多少(爱因斯坦开发了脑子的多少)钻石消耗抽永久皮肤,钻石不够先别着急,大神公布钻石领取方法摄影后期,photoshop图层蒙版的使用,判定你。。。火车站显示屏不显示零点以后的票吗

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形