Dagger2模块化讲解--第三章

啥是模块化?看图


看到没是不是与很多module呀!这就是模块,上一章节说了,找对象会从模块找

举个例子

Teacher对象构建需要Studnet和StudntClass

Teacher类

public class Teacher {
    public Student student;
    public StudentClass studentClass;

    @Inject
    public Teacher(Student student, StudentClass studentClass) {
        this.student = student;
        this.studentClass = studentClass;
    }
}

Student 和 StudentClass类

public class Student {

}

public class StudentClass {
}

根据上面的情况,我们必须在Module中告诉Studnet和StudentClass如何构建,这时候我建立了2个Module

@Module
public class StudentModule {

    @Provides
    public Student provideStudent(){
        return new Student();
    }
}

@Module
public class StudentClassModule {
    @Provides
    public StudentClass providesStudentClass(){
        return new StudentClass();
    }
}

一个Module提供Student对象,一个提供StudnetClass对象

如何联系起来了?

方法1:在Componert的modules中配置多个

@Component(modules = {StudentModule.class,StudentClass.class})
public interface TeacherCompenent {
    void inject(MainActivity mainActivity);
}

方法2:不在Componert配置,记得把Componert换回来,在任意一个Modules导入一个,原理就相当于一个合并吧

@Module(includes = {StudentClassModule.class})
public class StudentModule {

    @Provides
    public Student provideStudent(){
        return new Student();
    }
}


猜你喜欢

转载自blog.csdn.net/wenyingzhi/article/details/80007488