APP 基本框架设计
APP 基本框架设计
前言
一个良好的APP 基本遵循“简单”,“易用”,“高效”,“便维护”,“可扩展”基本也是从这几个原则出发,比较符合用户体验;同时也是比较符合我们开发人员设计程序的初衷,尽量低的耦合性和尽量高的可复用性,而一个设计良好的应用程序;必然需要有个比较规范和通用的设计框架,因此APP框架设计就变得尤为重要了.
APP框架设计包括哪些内容
APP框架搭建的设计;主要的核心思想还是分层思想,通常设计下,会包括以下内容:(如下图)
APP框架搭建需要考虑的因数
目前现在比较流行混合开发模式,而上图框架的设计内容是基于原生基础上设计,原生开发固然体验比较好,但是开发周期相对于网页通常比较长,对于混合开发模式;我们要考虑以下几个方面:
1一般情况下;从用户体验的角度出发;为了提高用户体验;一般本地的一级页面,以及改动量比较小的页面,需要做成原生的。
2 基于公司实际情况出发,经常变动版本;改动比较大的或者详情页面我们可以做成网页形式,便于我们版本迭代更新
3复杂的软件必须有清晰合理的架构,否则无法后期扩展和维护;通常情况下;我们会结合业界比较成熟的一些设计模式;
1 MVC 是最常见的软件架构之一,业界有着广泛应用,也是早期我们APP 设计时最常见的一种架构模式.
§ 视图(View):用户界面。
§ 控制器(Controller):业务逻辑
§ 模型(Model):数据保存
MVC模式的意思是,软件可以分成三个部分。它们的通信方式
1.View传送指令到 Controller
2.Controller完成业务逻辑后,要求 Model改变状态
3.Model将新的数据发送到 View,用户得到反馈.
所有的通信都是单向的。
2 MVP 模式作为一种新型模式,是从经典的模式MVC演变而来,它们的基本思想有相通的地方,将 Controller 改名为Presenter,同时改变了通信方向。
1. 各个部分之间的通信,都是双向的。
2. View 与 Model 不发生联系,都通过 Presenter传递。
3. View 非常薄,不部署任何业务逻辑,称为"被动视图",即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
4模型与视图完全分离,我们可以修改视图而不影响模型;
5可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部;
6我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁;
7如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
3 MVVM (数据绑定) 最早是微软提出的;模式将 Presenter 改名为ViewModel,基本上与 MVP 模式完全一致。
简单的说,ViewModel就是View与Model的连接器,View与Model通过ViewModel实现双向绑定。
唯一的区别是,它采用双向绑定:View的变动,自动反映在 ViewModel,反之亦然.
谷歌推出了Data binding这个框架,Data Binding是一个 support包,因此与 Android M没什么关系,可以轻松的实现MVVM,Data binding解决了 Android UI 编程中的一个痛点,
官方原生支持 MVVM 模型可以让我们在不改变既有代码框架的前提下,非常容易地使用这些新特性。
其实在此之前,已经有些第三方的框架(RoboAndroid)
可以支持 MVVM 模型,无耐由于框架的侵入性太强,导致一直没有流行起来。
Data Binding 的基本用法
一 环境
要求你的Android Studio版本是1.3+
在开始之前,请更新你的Support repository
到最新的版本
要使用DataBinding,android的构建插件gradle要求1.5.0-alpha1或者更高的版本。
二 添加依赖
三Data Binding 入门级Demo 例子
1 我们首先定义一个java bean user 类
2 我们再来写一个布局文件;如下图
3最后来看看Activity
怎么写。
没有了之前的find控件,没有了setText,Activity
代码更加简洁明了
运行结果
结合项目用的比较多的设计架构一般分为2种:
A 单Activity+多Fragment的架构.
B 多模块Activity+多Fragment的架构.
是使用单Activity+多Fragment的架构,还是多模块Activity+多Fragment的架构?
单Activity+多Fragment:
一个app仅有一个Activity,界面皆是Frament,Activity作为app容器使用。
优点:性能高,速度最快。参考:新版知乎 、google系app
缺点:逻辑比较复杂,尤其当Fragment之间联动较多或者嵌套较深时,比较复杂。
多模块Activity+多Fragment:
一个模块用一个Activity,比如
1、登录注册流程:
LoginActivity + 登录Fragment+ 注册Fragment + 填写信息Fragment + 忘记密码Fragment
2、或者常见的数据展示流程:
DataActivity + 数据列表Fragment+ 数据详情Fragment + ...
优点:速度快,相比较单Activity+多Fragment,更易维护。
总结
权衡利弊,我认为多模块Activity+多Fragment是最合适的架构,开发起来不是很复杂,app的性能又很高效。
当然。Fragment只是官方提供的灵活组件,请优先遵从你的项目设计!真的特别复杂的界面,或者单个Activity就可以完成一个流程的界面,使用Activity可能是更好的方案。
Android 的 Data Binding 框架还在 beta 阶段,Android Studio 对其内部支持也不是很完整,
进步的空间还很大。不过它被设计和开发的很好,将会改变 Android 应用开发方式(如果顺利的话)。
1 我个人比较倾向于采用了MVP+ Data Binding的混合模式.也就是比较流行热火的MVPVM模式。
2如果有程序框架,因为项目的几乎是一致的,所以上一个项目的项目计划可以直接拿过来使用,而且经过几个项目之后,这个项目计划的模板会越来越细,越来越实用。
因为结构一致,代码混乱性会降低到可以接受的程度,而且可以重用上一个项目的大部分代码。而且逻辑清晰,使得代码相对较小,不容易在代码中迷失。因为代码逻辑简单有序,所以测试起来会很容易。
3 最后我们不能永远理想化地去选择所谓最好的设计,具体问题还得具体分析;在现实的必要情况下,我们要敢于舍弃,最合适的设计才是最好的设计.
APP 基本框架设计相关推荐
- Android通用框架设计与完整电商APP开发系列文章
作者|傅猿猿 责编|Javen205 有福利 有福利 有福利 鸣谢 感谢@傅猿猿 邀请写此系列文章 Android通用框架设计与完整电商APP开发 课程介绍 [[导学视频](http://szv1.m ...
- AS第一次作业:实现APP门户界面框架设计
实验内容:请根据课程实操实现APP门户界面框架设计,至少包含4个tab页,能实现tab页之间的点击切换: 技术:使用布局(layouts)和分段(fragment),对控件进行点击监听: 目录 App ...
- 产品经理必了解的3个app技术框架
在现在越来越多的app,你可以看到有一些app中是混着网页加载的(我们俗称的为H5)但要注意的web 前端开发是包含着h5的.web前端开发还包括了许多内容,比如说后台html,css,div等都是属 ...
- APP开发两年的心得:App代码架构设计(1)
这篇文章全程文字,不带图,不带电影.但真的有可能给你带来不一样的视角:要认真看! 还有不对的地方留言评论.也希望多评论留下你的看法,这也许能帮助到我.感谢 前言 工作两年,一直都是从事App开发方面, ...
- 《精通自动化测试框架设计》目录—导读
作者简介 精通自动化测试框架设计 陈冬严,浙江大学硕士,具有10年软件测试和团队管理的工作经验,先后服务于ITSM.PLM软件研发企业,现就职于某金融行业核心机构IT规划部门.业余时间喜欢园艺. 邵杰 ...
- Android App的架构设计:从VM、MVC、MVP到MVVM
随着Android应用开发规模的扩大,客户端业务逻辑也越来越复杂,已然不是简单的数据展示了.如同后端开发遇到瓶颈时采用的组件拆分思想,客户端也需要进行架构设计,拆分视图和数据,解除模块之间的耦合,提高 ...
- 高德智慧景区随身听播放器框架设计与实现
简介:我们开发选型并没有采用传统的TTS技术(由文本内容生成机器语音),而是采用了更加通用音频格式(比如mp3),作为讲解的音频输入源,方便讲解者进行二次创作.本文将简单回顾高德智慧景区随身听播放器的 ...
- 我从 Vuejs 中学到了什么——框架设计学问
框架设计远没有大家想的那么简单,并不是说只把功能开发完成,能用就算完事儿了,这里面还是有很多学问的.比如说,我们的框架应该给用户提供哪些构建产物?产物的模块格式如何?当用户没有以预期的方式使用框架时是 ...
- [译] 想帮助用户做决定?你的APP可以这样设计!
原文地址:Design your app for decision-making 原文作者:Jeni 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:PTH ...
- python app自动化测试框架_appium+python,app自动化测试框架
基于appium的app自动化测试框架 基于appium框架的app自动化测试 App自动化测试主要难点在于环境的搭建,appium完全是基于selenium进行的扩展,所以app测试框架也是基于we ...
最新文章
- bps计算机,bps指的是计算机的什么
- 以太坊solidity编程常见错误(不定期更新)
- 【转自lzplzp】pair project总结
- ecos(redboot)移植剖析
- formatter java_Java编程中的Java Formatter是什么?
- Zend Debugger 配置
- NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别
- Python输出LOGO图标
- Hexo 入门指南(一) - 简介 准备
- element 方法返回的boolean被当成字符串了_quot;==quot;和 equals 方法有什么区别
- Python Tricks(十三)—— 欧几里得算法
- docker gpu 创建 训练环境_基于 Mesos、Docker 和 Nvidia GPU 的深度学习平台实践
- 中国游戏发展史V-02
- CPU 的 ring0,ring1,ring2,ring3
- Lesson 19 A very dear cat 内容鉴赏
- 织梦网站数据入库接口(实现图片本地化,自动图片打水印)【原创】
- linux镜像文件没有gho,【iso文件中没有gho文件】iso变gho_iso文件里没有gho-系统城...
- python里感叹号是什么意思_感叹号!代表什么意思?(标点符号的用法之感叹号)...
- 基于SSM的书店管理系统
- html生成列表模板的方法
热门文章
- nes 模拟器_如何使用模拟器在PC上玩自己喜欢的NES,SNES和其他复古游戏
- android版本4.4.2导航,天敏D8+_rk3288_Android_4.4.2_kiui7_蓝光导航极速版
- mysql front登陆1045错误_解决MySQL-Front连接MySQL出现1045错误
- YCOJ中国邮递员问题
- 卡巴斯基:2019年金融行业网络威胁趋势报告
- 2020年产品经理面试题-----产品经理面试题
- js 实现选择文件存放路径
- malloc 函数详解
- MapGIS数据中心是什么?
- TeamViewer远程连接控制软件