基于Android真实项目教你一步一步搭建架构1 -- 概述

前言

这篇可不是干货篇,这是概述篇,其实也可以说是预告篇。笔者最近看到不少人讨论 Google 推的 Android Architecture Components,这是Google推出的一个新的项目架构。有些人讨论说,不会吧,又来一个,我还没把Google官方的MVP架构用在真实项目上呢。

笔者正是因为这个原因,决定基于上家公司的真实项目,将项目的架构都提取出来,教你如何一步一步搭建一个实战的项目架构。体验一下整个项目架构的搭建过程。

不过,项目架构其实不是一次性搭建完成的,而是在项目的开发过程中不断的摸索优化和重构得来的。作为这个项目的Android负责人,架构都是本人搭建起来的,其中遇到的坑和艰辛……(此处省略无限个字吧)

同时,笔者还会教你如何根据搭建的架构进行单元测试。为什么要教单元测试呢,因为你需要学会单元测试,并站在测试的角度去搭建可测并且更加易于测试的架构。这就是有时候明明代码可以继续封装或者可以设计成这样,但是为什么选择这个方式呢,为什么要这么优化代码呢,你或许可以在单元测试的过程中找到答案。

我们先来了解下架构的模式,有利于架构的搭建!

MVC

MVC模式的意思是,app可以分成三个部分。

这里写图片描述

  • 视图(View):用户界面。
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据保存

各部分之间的通信方式如下:

这里写图片描述

  • View 传送指令到 Controller
  • Controller 完成业务逻辑后,要求 Model 改变状态
  • Model 将新的数据发送到 View,用户得到反馈

    1. 各部分之间的通信,都是单向的。
    2. View 通过 Controller与Model 联系,Model 可以直接联系View。
    3. Android 中通常Activity 担任了 View 和 Controller两个角色,业务逻辑都部署在 Activity中。

MVP

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

这里写图片描述

  1. 各部分之间的通信,都是双向的。
  2. View 与 Model 不发生联系,都通过 Presenter 传递。
  3. Android 中通常Activity 担任了 View角色,或者View角色由Fragment等View担任。而 Presenter非常厚,所有逻辑都部署在那里,所以Activity就变得薄了,不部署任何业务逻辑。

MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

这里写图片描述

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。

Google 官方的MVP架构

Google官方 架构

architecture的解释:n. 建筑学;建筑风格;建筑式样;建筑艺术;架构。
上面的图是Google官方为广大开发者提供的一个关于架构的示例:

Google 官方架构示例代码GitHub 地址

这里写图片描述

笔者上家公司的项目就是基于 MVP-Rxjava 这个官方demo项目基础上,慢慢搭建起来的。

所以笔者这个系列的下一篇文章就是要讲解MVP-Rxjava这个官方
demo的代码。然后在这个基础上,一步一步搭建起网络框架、图片框架等相关内容。

架构涉及的内容:

  • Mvp,Google官方出品的Mvp架构项目,含有多个不同的架构分支(此为Rxjava分支)
  • Dagger2,Google根据Square的Dagger1出品的依赖注入框架,通过Apt编译时生成代码,性能优于使用运行时反射技术的依赖注入框架
  • Rxjava,提供优雅的响应式Api解决异步请求以及事件处理
  • RxAndroid,为Android提供响应式Api
  • Rxlifecycle,在Android上使用rxjava都知道的一个坑,就是生命周期的解除订阅,这个框架通过绑定activity和fragment的生命周期完美解决
  • RxCache,是使用注解为Retrofit加入二级缓存(内存,磁盘)的缓存库.
  • PersistentCookieJar,是处理登录获取Cookie并将其持久化
  • ExException,是全局统一处理Rxjava错误的类(自封装)
  • RxPermissions,用于处理Android运行时权限的响应式库
  • Retrofit,Square出品的网络请求库,极大的减少了http请求的代码和步骤
  • Okhttp,同样Square出品,不多介绍,做Android都应该知道
  • Gson,Google官方的Json Convert框架
  • Butterknife,JakeWharton大神出品的view注入框架
  • Eventbus,一个事件总线处理库
  • KLog,Log框架容器,内部代码极少,但是思想非常不错
  • Glide,图片加载库,可更改为其他的库,Api和Picasso差不多,缓存机制比Picasso复杂,速度快,适合处理大型图片流,支持gfit,Fresco太大了!在5.0以下优势很大,5.0以上系统默认使用的内存管理和Fresco类似
  • LeakCanary,Square出品的专门用来检测Android和Java的内存泄漏,通过通知栏提示内存泄漏信息

以上可能不全,如果需要会继续加入,下面是单元测试涉及的

  • Junit,用断言方式测试方法的返回值
  • Mockito,如果方法没有返回值,那么可以用Mockito测试方法的执行顺序。也可以通过拦截修改方法的返回值测试不同状态的执行流程
  • Espresso,Google官方出品,用于涉及到Android相关代码的测试,速度慢于Roboletric,但api更丰富更强大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值