Dependency injection Pojo类的依赖注入

Dependency injection Pojo类的依赖注入,dependency-injection,dagger-2,Dependency Injection,Dagger 2,目前我正在努力理解依赖注入。假设我有以下课程: 专辑 public class Album { private String id; private String name; private String cover; private Artist artist; } 歌曲 public class Song { private String id; private String title; private Artist artist

目前我正在努力理解依赖注入。假设我有以下课程:

专辑

public class Album {
    private String id;
    private String name;
    private String cover;
    private Artist artist;
}
歌曲

public class Song  {
    private String id;
    private String title;
    private Artist artist;
    private Album album;
}
艺术家

public class Artist {
    private String id;
    private String name;
}
所以
歌曲
取决于
专辑
艺术家
专辑
取决于
艺术家
。假设我从数据库中获取所有必填字段。当前,所有成员都是通过构造函数传入的。通常,我会多次创建相同的唱片对象(在同一张唱片的每首歌曲的循环中)。这是依赖注入可以避免的吗


我该如何使用匕首2?我真的不明白这一点。这只是将构造函数移出类吗?

如果使用Dagger创建模型类,那么肯定是做错了什么

当然,理论上这是可能的。您仍然需要一个循环,但现在您需要创建组件并传入参数,以便它们可以分别创建自己的
艺术家
、专辑、歌曲。一种
ArtistComponent
,它将其
Artist
提供给
AlbumComponent

最后,您仍然有一个循环,但这次只是创建组件来创建所需的对象。您在这里获得的唯一好处是比以前更多的开销和更多的对象创建。所以不,请不要在这里使用匕首


依赖注入旨在将您的业务逻辑链接在一起。如果您有一个从数据库读取的
ArtistDao
,那么您可能还有一个
ArtistPresenter
,它需要所述DAO才能工作。ArtistDao仍然读取并创建艺术家(数据模型),但您可以使用Dagger创建DAO并将其传递给演示者

这只是将构造函数移出类吗

匕首不会神奇地创造物体。如果您有一个依赖项,您仍然可以在构造函数中声明该依赖项。Dagger将为您调用具有正确参数的构造函数,并可能在以后保留创建的对象(范围)


依赖关系框架旨在简化样板文件,即创建一个对象,然后将其传递给下一个对象,等等。它们将解决依赖关系,并保持它们不变。

如果使用Dagger创建模型类,则肯定是做错了什么

当然,理论上这是可能的。您仍然需要一个循环,但现在您需要创建组件并传入参数,以便它们可以分别创建自己的
艺术家
、专辑、歌曲。一种
ArtistComponent
,它将其
Artist
提供给
AlbumComponent

最后,您仍然有一个循环,但这次只是创建组件来创建所需的对象。您在这里获得的唯一好处是比以前更多的开销和更多的对象创建。所以不,请不要在这里使用匕首


依赖注入旨在将您的业务逻辑链接在一起。如果您有一个从数据库读取的
ArtistDao
,那么您可能还有一个
ArtistPresenter
,它需要所述DAO才能工作。ArtistDao仍然读取并创建艺术家(数据模型),但您可以使用Dagger创建DAO并将其传递给演示者

这只是将构造函数移出类吗

匕首不会神奇地创造物体。如果您有一个依赖项,您仍然可以在构造函数中声明该依赖项。Dagger将为您调用具有正确参数的构造函数,并可能在以后保留创建的对象(范围)

依赖关系框架旨在简化样板文件,即创建一个对象,然后将其传递给下一个对象,等等。它们将解决您的依赖关系,并保持它们不变