H5W3
当前位置:H5W3 > Andriod > 正文

【android】Android框架之使用MVP+Dbrowseer2解耦

0、背景:

      最近公司项目要求进行架构重构,从mvc转到mvp模式。我便自己动手研究了一下mvp设计模式,结合dagger2进行解耦。

1、架构设计:

       mvc设计模式:m、v、c三层之间互相关联,但是都是单向通信。

       优点:快速,容易上手,需要什么东西就创建什么东西,适合前期快速开发,单人开发。

       缺点:耦合度高,类与类之间你中有我,我中有你,不利于后期维护,多人开发会变得很麻烦。

       mvp设计模式:m与v层没有任何关联,数据和视图完全的解耦,两者只和p层通信,而且是双向通信。

       优点:对比mvc降低了耦合度,但依然存在耦合(所以可以配合dagger2进行解耦),适合多人开发,后期维护方便。

       缺点:需要创建大量接口,代码实现过程繁琐。

       总结:

       从最初流行的mvc到现在mvp,每个设计模式都有它的优缺点,我们需要根据自己公司业务需求和实际情况来进行选择。

2、dagger2:

    一、引入配置
     1、添加dagger2的依赖(android studio3.0版本更新后使用 implementation 代替 complile)
     implementation ‘com.google.dagger:dagger:2.6’
     annotationProcessor ‘com.google.dagger:dagger-compiler:2.6’

    二、操作步骤
    1、使用Inject指定需要注入的目标。
    比如创建presneter对象。
    2、使用Module指定类,Provides指定方法。
    用来存放注入对象的创建。比如return new presenter的对象。
    3、使用Component(modules=xxx.class)通过接口将创建实例的代码和目标关联在一起。
    指向的是Module类,接口中的方法是Inject指定对象。
    4、Rebuild。编译生成文件。
    5、注入presenter对象。通过生成的文件,创建presenter对象来调用方法,完成解耦。
    如图,其实就是把创建presenter对象使用注解分开来做,最后完成赋值。

    @Inject:指定需要注入的对象,不能为私有。
    @Module:指注入的内容所依赖的类。@Provides:指定注入内容所依赖的方法。
    @Conmponent:连接注入对象和注入内容的桥梁,既指定对象,又指定内容依赖的类。

3、代码

    分包结构

具体代码地址:https://github.com/xieao100/MyDemo

本文地址:H5W3 » 【android】Android框架之使用MVP+Dbrowseer2解耦

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址