Android 应用架构概述

MVP解耦

许多时候视图层面依然充满中许多扑朔迷离的逻辑,例如UI事件的响应处理,网络响应的回调等等,充斥着各个监听器的回调。大家意在视图V便当更简便易行、更纯粹,V只负责绘制和刷新其他逻辑都毫无管了,也不想和M有直接的调换。从MVC的VC(Activity)中大家分手一层出来叫做Presenter,由它来担负调度UI何时刷新、由它来接受UI的风浪响应并转达命令给M。从此V和M是观察者,V和数码的离开跟远了。

mvp

V:Activity为代表,那时候的Activity更为简单了,只承担UI的绘图和刷新。

P:负责传达命令。向上接收V的轩然大波指令并要求的时候传达给M,向下接收M的吩咐并通报V刷新UI。

M:只负责出来数据逻辑。其实还是可以分开一些东西,比如Http请求,很多时候咱们的Http框架都是用的第三方开源框架,如果有一天更优质的框架出现了,要转换,怎么才能到位不影响其他层次?即使自身门做了分层隔离那么,我门可以很轻松的换掉,如果没有做分层隔离,那么我门可能要在每一个效率模块的M中修改代码,修改代价是巨大的,所以一回第三方开源框架我都不会直接行使而是在业务上做一层抽象隔离。同理,本地数据的仓储,也有要求做响应的包裹或隔离,因为明天是用Litepal,也许某一天想用格林Dao了,只要求修改封装类的代码就好了。

MVP的依赖性关系:

MVP看重关系

MVP类图:

MVP类图

我们把每一层都抽象成一个接口,例如V层,大家定义一个接口为View(不要和Android
API里的View弄混了),让后Activity成为这些View的现实贯彻。每一层对另一层的依靠都是接口重视,并不关注另一层的求实完成,每一层我们都得以写不一致的落到实处,随时切换,那就表示,有一天倘使有一层倒霉用了,大家得以轻松的重写另一个贯彻来替换掉,而不是登高履危的改动。

解耦

好一些的设计必然会做一遍隔离:尽量做到UI和数码交互透明、“互不干涉内政”。

解耦

隔断的利益是:一、
提升可维护性。在UI逻辑爆发变化甚至整个端掉都不会潜移默化到拍卖逻辑。二、
升高可复用性。复用平常只数据的复用,数据逻辑不受UI的左右,因而可以服务于多个UI视图。三、
可读性。层次分清之后根据联合的架构思路去领略代码,当然还得靠开发人员出色的编程素养和代码规范。

那就是说怎么落成隔离呢?关于解耦,业内比统一的能够概括为二种:MVC、MVP(MVVM)。

第二阶段:积累一定用户量之后再小步快跑的迭代功用。

MVP demo

https://github.com/liuguangli/androidmvp

下卷小说将以报到为工作场景分析MVP的切切实实贯彻。下篇:《Android应用架构之MVP达成》

必然联系

用数据驱动视图变化,那才暴发了五花八门的运用交互世界,所以,视图和数据的互换是一定的。

视图数据的直白关联

在Android平台和总体活动支付生态都进步的不胜快,在Android兴起之初,对层的基本点不是太强调,所有很多开首写Android程序的支付对层划分不是老子@晰
,看到许多入门书本里很多平素在Activity里面一贯处理数据的代码,例如直接在Activity里面一贯调SharedPrefrence操作数据,直接在Activity
里面一直调用网络请求等,很多低等选手的很简单写出这么没有层次的代码出来。当接口变更,当存储形式更好的时候整个UI层面的逻辑都受影响。

寻常一个App的成长进程都是这么的:

先是阶:先用最少的基金和时间连忙把东西做出来。

其三品级:性能和经验上逐步求精。

本人发现众多系列在第二阶段和第三阶段花费了累累理所当然不应当浪费的人力财力、时间资产。究其原因就是因为早期忽略了成立的架构,我甚至经历过因为先前期间的统筹不创建造成前期技术债务太多品类濒临死掉、整个项目组全员换掉重造锅炉的境界。所以,大家为何不既能使用最精简的方法落成功又能要确保中期灵活的壮大能力啊?上面是本身近来项目举行的片段整治,投石问路,希望一起座谈。小说头阵:http://www.liuguangli.win/archives/299。

MVC解耦

mvc

V:在MVC架构中Activity(托管Fragment,View,WebView等)首先充当V的角色。

M:业务逻辑层划分出来专门处理多少。例如:数据的http请求,数据解析和存储等逻辑都封装在这一层。Activity不直接和Http,Dao(数据访问对象层)直接有关系了,视图数据之后为路人。

C:C是如何?MVC这一个情势及概念,在运动应用开发出新此前就早已发出了,最经典的水用场景JSP
+servlet+javabean,我起来接触MVC也是在做JavaWeb开发的时候。后来Android支付火了,把那套形式搬上来。可是C套上了不太好驾驭。Android应用开发中,套上MVC,Activity
兼具V和C的角色。

视图和数量

好的代码一定是层次显明、职分明显,不好的代码架构就是从未层次没有模块,每一趟修改代码都是牵一发动全身。从大的方面来讲Android应用都会被分成两层:视图层、数据层。

多少和视图

视图:一般以Activity为依托的各个View,包罗View、ViewGroup和WebView,还有种种fragment。

多少:支撑整个应用逻辑的数额,分为两类。一类存储在远端服务器上的,一类在地面。远端数据必要通过网络(经常是Http)获取,本地数据包含sqlite存储的关系型数据,文件系统,内存缓存对象。

网站地图xml地图