服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android应用架构思想分析

Android应用架构思想分析

2022-03-06 20:23apkbus Android

本篇文章是一个Android应用开发的老程序员写的关于Android应用架构思想分析的详细内容,希望对你有启发。

算算日子,工作刚好三年了。这篇开始,鄙人就要向着各种以前想起来就头大的方向努力前进了。作为在Android应用层搬砖多年的民工,首篇我想谈谈自己对架构思想的一些看法。如有不妥,还请拍砖。

盖楼的故事(虚构)

有一块地,两个区域,开发商分别让两个包工头负责开发。

包工头A办事干净利落,甩开膀子就开工了。为了省钱雇了一个全能的工人,他既要去采购盖房的材料,又要用这些材料盖房子。起初底层屋子结构简单,还能应付得来,到了后面复杂的设计需求时,忙的不可开交,经常精疲力尽,阻断了盖房子的进程,使得老板很是不开心,偶尔让他改个屋子结构,他要把整层楼都推到才能实现,严重影响了工期。画的图纸都是一次性的,不能重用,耗时又耗钱,开发商整天吹胡子瞪眼的跟在屁股后面催。

包工头B拿到开发商方案后,先召集小弟开了个会,确定了所有楼层的样式,并把它们拆分成独立的模块。按照模块划分给了各个负责人,有制定楼层样式的,有专门负责资源提供的,有负责运送资源的,有按照预定方案实施的等等。花了大半个月将所有任务都分配完毕,开始施工。虽然人雇佣的有点多,前面的时间也耽误了大半个月,但是一开工很快就赶上了隔壁楼。emmm,开发商喜笑颜开,点点头,这个钱花的划算,完事后以后就用包工头B了。

不久后,两块地都完工了。这时质检开始了,令人头疼的A区域,有个小毛病就要拆掉一大片地方去改造,有的地方改好了却又影响了其它地方,而反观B区域,专人负责只要改有问题的地方就好了。

后来,包工头A游走在各个小开发商,工资又低又累,而包工头B已经走上了人生巅峰。(哈哈,终结)

包工头B的巅峰秘籍

我们再来回顾一下包工头B的盖楼经过。

接到项目,没有立即开发,开会整理需求;

按需求、职能划分模块,并由对应的人员负责;

各功能模块的负责人扁平化管理,没有相互掣肘;

同样的,我们App的开发也是一样的道理,不能像包工头A一样把所有的任务都交给Activity去做。我们要像包工头B一样分层去创建App。大家可以了解一下clean Architecture,这里将App应用分为三层,内-中-外,然后由4个管理者分别去管理他们。

分层的准则:

  • 由外到内抽象
  • 内层不了解层,外层依赖内层
  • 分工明确,相互独立

先来解释一下第一条,以往我们开发App都是先从界面开始,然后最终到业务逻辑。现在要反过来,接到需求,要先明确实体是什么

(举个例子,比如登录功能,它所描述的实体就是用户User),然后它有哪些行为(比如登陆,登出userCase)。最后再到具体功能实现。

内层不了解外层,还是拿登录来说,在内层只需要知道用户有登录以及登出的行为就可以了,至于它是如何进行这些行为,内层就不需要知道了,但是反过来外层要实现内层的行为就要知道内层有哪些行为于是便产生了依赖关系。内层能独立存在,而外层必须依赖内层。

分工明确,相互独立,讲的是各模块功能独立存在,就比如登录,和注册功能是相互独立的,各司其职,不能越俎代庖。

4个管理者

  • domain:定义抽象实体,核心业务逻辑,以及数据输出接口。此层为纯java代码,建议直接创建java module。
  • data:数据管理,分为本地的存储(sqlLite,sharedpreferences),以及服务端Api。
  • device:与Android底层相关,如通知,蓝牙,传感器等等。
  • app:我们最熟悉的层级,内部可以根据各自的喜好选择MVP,以及MVVM模式来实现UI界面。

App开发的流程

  • domain层中定义抽象实体,设定其对应的行为。
  • data层中,给予数据支持
  • device层,按需开发

app层,这里以MVP为例,首先在presenter中实现domain层定义的所有行为,data层和device层协助。最后实现UI界面,完成功能。

原文链接:http://www.apkbus.com/blog-302849-78058.html

延伸 · 阅读

精彩推荐
  • AndroidAndroid编程解析XML方法详解(SAX,DOM与PULL)

    Android编程解析XML方法详解(SAX,DOM与PULL)

    这篇文章主要介绍了Android编程解析XML方法,结合实例形式详细分析了Android解析XML文件的常用方法与相关实现技巧,需要的朋友可以参考下...

    liuhe68810052021-05-03
  • Android汇总Android视频录制中常见问题

    汇总Android视频录制中常见问题

    这篇文章主要汇总了Android视频录制中常见问题,帮助大家更好地解决Android视频录制中常见的问题,需要的朋友可以参考下...

    yh_thu5192021-04-28
  • AndroidAndroid中AsyncTask详细介绍

    Android中AsyncTask详细介绍

    这篇文章主要介绍了Android中AsyncTask详细介绍,AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合,需要的朋友可以参考下...

    Android开发网7452021-03-11
  • AndroidAndroid CardView+ViewPager实现ViewPager翻页动画的方法

    Android CardView+ViewPager实现ViewPager翻页动画的方法

    本篇文章主要介绍了Android CardView+ViewPager实现ViewPager翻页动画的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Abby代黎明9602022-03-02
  • AndroidAndroid实现Service获取当前位置(GPS+基站)的方法

    Android实现Service获取当前位置(GPS+基站)的方法

    这篇文章主要介绍了Android实现Service获取当前位置(GPS+基站)的方法,较为详细的分析了Service基于GPS位置的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    Ruthless8342021-03-31
  • AndroidAndroid实现固定屏幕显示的方法

    Android实现固定屏幕显示的方法

    这篇文章主要介绍了Android实现固定屏幕显示的方法,实例分析了Android屏幕固定显示所涉及的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    鉴客6192021-03-27
  • AndroidAndroid界面效果UI开发资料汇总(附资料包)

    Android界面效果UI开发资料汇总(附资料包)

    android ui界面设计,友好的界面会提高用户体验度;同时也增强了android ui界面设计的难度,本文提供了一些常用开发资料(有下载哦)感兴趣的朋友可以了解下...

    Android开发网4672021-01-03
  • AndroidAndroid程序设计之AIDL实例详解

    Android程序设计之AIDL实例详解

    这篇文章主要介绍了Android程序设计的AIDL,以一个完整实例的形式较为详细的讲述了AIDL的原理及实现方法,需要的朋友可以参考下...

    Android开发网4642021-03-09