当前标签 / MVP / 总共4篇

用Kotlin对MVP基本结构实现

之前我有写过一个开源的Java实现的基于MVP架构的开源Android工程基本结构《MVP架构的Android基础框架》

最近在用Kotlin做项目,计划使用MVP架构在开始一个新的项目,来继续聊聊Kotlin中MVP的实现。

参考链接:

MVP架构

复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。

MVC架构

MVC中所有通信都是单向的。

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

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向,MVP 非常重要的一点是基于测试,P 层不应该有任何 android sdk 的代码,mock M 和 V 层后,可以脱离 android 直接对 P 层进行 Java Test。

阅读更多

Dagger2入门学习之MVP项目整合(下)

上一篇Dagger2入门学习之MVP项目整合(上)的最后我们列举了Dagger的关键注释,其中@Singleton和@Scope还没有接触,接下来我们来先看看这两个标签的使用。

@Singleton

类似于SharedPreferences对象,我们可能在整个App的生命周期中只需要一个单例,而不需要每次都通过application.getSharedPreferences(“spfile”, Context.MODE_PRIVATE)获得新的对象,那么怎么办呢,我们只需要在你需要单例的对象提供方法上加一个注解@Singleton ,类似这样:

@Module
public class AppModule {

    private MyApplication application;

    public AppModule(MyApplication application) {
        this.application = application;
    }

    //全局单例SharedPreferences
    @Provides
    @Singleton
    SharedPreferences provideSharedPreferences() {
        return application.getSharedPreferences("spfile", Context.MODE_PRIVATE);
    }

    @Provides
    MyApplication provideApplication() {
        return application;
    }
}

只需要一个@Singleton,无论我们在多少个Activity容器中通过@Inject获取这个SharedPreferences对象的实例,该对象都是同一个对象,从而实现了全局单例的效果。

阅读更多

Dagger2入门学习之MVP项目整合(上)

Dagger基础回顾

在前面一篇Dagger2基础传送门我们得出了一个结论。

  1. 若一个类(Xx)的构造函数被@inject标注,则该类编译时会产生Xx_Factory.
  2. 若一个类(Xx)的成员变量被@inject标注,则该类编译时会产生Xx_MembersInjector.
  3. @Component标注的接口(Xx)在编译时生成DaggerXx,负责将上面两个联系起来。

下面我们通过前面提到的这个例子再来回顾一下这个结论

/**
 * Created by 水寒 on 2017/11/16.
 */

public class Province {

    @Inject
    public City city;

    @Inject
    public Province(City city) {
        this.city = city;
    }

    public String showAddress() {
        return "四川省" + city.show();
    }
}

Dagger2会在编译过程中生成对应的依赖项,这些依赖项在Android Studio该路径下,如图所示:

Dagger依赖生成文件目录

阅读更多

MVP架构的Android基础框架

说明

这是我开源的一个基于MVP架构的Android开发基础框架,源码开放在gitlab上。

仓库地址:https://gitlab.com/lxqxsyu/TestKotlin

框架介绍

MVP架构,Retrofit+Rxjava+Okhttp网络请求,可切换Glide和Fresco图片框架,封装基础刷新分页加载,部分功能后期会有所改进。

框架整体结构

框架整体结构

阅读更多