Android框架之使用MVP+Dagger2解耦

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值