热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

移动开发中的软件架构

在移动开发领域,我们往往会遇到软件的可扩展性、可复用性以及可维护性等问题,这就涉及到如何做好软件的架构设计或者重构优化工作。结合实践与思考,本文对其中的Android应用软件架构做

《移动开发中的软件架构》

在移动开发领域,我们往往会遇到软件的可扩展性、可复用性以及可维护性等问题,这就涉及到如何做好软件的架构设计或者重构优化工作。结合实践与思考,本文对其中的Android应用软件架构做些梳理,首先是层次结构划分,其次是技术选型的考虑。

这里层次结构的划分,可以从横向和纵向两个维度来考虑。

横向上的结构层次,主要指代码文件目录结构或者与之对应的“包”(Package)的划分。

对于使用了MVP架构的应用软件,结合实现方案,可以分为ui、presenter、model、server、utils等。其中ui包括各种Activity、Fragment,以及自定义的视图组件、布局组件等。而model包括业务模型、相关数据的定义等,server负责处理软件和服务器的通信接口实现、JSON数据解析等工作。

在ui中,还可以按照业务功能来对Activity、Fragment加以进一步的划分,这样更方便团队分工维护。因为业务功能相关的UI大都体现在Activity或者与之关联的Fragment,这样划分比较简明直观。

纵向上的层次结构,更侧重逻辑调用和依赖关系,可分为业务层和组件层。

其中业务层,用于实现该软件对应的UI界面以及相关的功能逻辑,和用户操作、展示关联较多,可以选择性地使用MVP架构来实现。

因为该架构会增加类的数量并且至少涉及到三个层次的逻辑调用(在业务层之内),建议只用在业务逻辑较多、UI显示相对复杂,或者后续更有可能需要扩展的地方。

具体到相关实现,又有不同的策略,例如我们可以使用Activity/Fragment/Adapter等组件来封装扩展Presenter,规避其复杂的生命周期变化、资源/变量的初始化和释放等操作对业务逻辑的影响。也可以将Activity/Fragment作为视图层主体,通过接口和Presenter实现互相调用。这里还是需要结合业务特点,在架构实现复杂度与可读性、可维护性之间加以权衡,选择合适的实现方案,满足要求即可。

组件层,主要是独立于上述业务逻辑之外的,但与之有一定关联的功能组件,例如推送服务、图像识别、社会化分享以及支付组件等,通常作为模块组件的方式支持业务层。如果进一步细分,组件层还可以分为功能组件和基础组件层。例如网络连接管理、日志管理等组件,相对更为通用,和业务逻辑的直接关联也更少一些,可以认为是基础组件。

在架构设计过程中,通常还涉及到各种技术选型,这也是为了避免重复造轮子,更好地利用已有成果、提高开发效率。例如,业务层选用MVP还是MVVM架构?在哪些子模块使用?组件层,图像异步加载使用UIL还是Picasso?网络连接管理采用OkHttp还是Volley?诸如此类。

这部分涉及较多的开源项目、相关组件以及第三方服务商的优缺点分析,例如不同组件的性能、sdk文件体积、组件的配套使用等因素,后面继续探讨。


推荐阅读
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 欢迎Follow我的GitHub,关注我的CSDN.应用本质上是一个apk包,即一个zip包,可以直接显示其中的内容.通过apk文件,我们可以获知apk的版本信息,so库和第三方 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • Retrofit+Rxjava+OkHttp
    为什么80%的码农都做不了架构师?参考:http:duanyytop.github.io20160806Retrofit%E7%94%A8%E6% ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • Android图形架构学习笔记(待修改)
    以下简单总结来自Android官网,稍作总结:https:source.android.google.cndevicesgraphics概览Andr ... [详细]
  • 如何入手卷积神经网络
    首先,我们先看看下面这张照片: ... [详细]
  • 可能会|表里_深入理解DiskLruCache源码
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了深入理解DiskLruCache源码相关的知识,希望对你有一定的参考价值。作 ... [详细]
  • 在Android Studio中查看SQLite数据库
    原来查看数据库内容,我们一般都是将数据库文件从手机导出,再用专门的软件打开查看,比较繁琐。最近发现了一个比较方便的方法:使用工具stetho。使用方式在gradle中配置depen ... [详细]
author-avatar
手机用户2502857113
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有