Pojo 的依赖注入 类

Dependency injection of Pojo classes

目前我正在尝试了解依赖注入。假设我有以下 classes:

专辑

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;
}

所以 Song 取决于 AlbumArtistAlbum 取决于 Artist。假设我从数据库中获取了所有必需的字段。目前所有成员都是通过构造函数传入的。通常我会多次创建相同的专辑对象(在同一专辑的每首歌曲的循环中)。这是可以通过依赖注入避免的事情吗?

如何使用 Dagger2 执行此操作?我真的不明白这一点。 class 中只有 "moving the constructor" 个吗?

如果你使用 Dagger 来创建你的模型类你肯定做错了什么。

当然,理论上这是可能的。您仍然需要一个循环,但现在您将创建组件并传入参数,以便它们可以分别创建 ArtistAlbumSongArtistComponent 将其 Artist 提供给 AlbumComponent,等等

最后你还是有一个循环,但这次只是创建组件来创建你需要的对象。您在这里获得的唯一东西是大量的开销和比以前更多的对象创建。所以不,请不要在这里使用 Dagger。


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

Is this only "moving the constructor" out of the class?

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

依赖框架旨在减少样板文件,您可以在其中创建一个对象,将其传递给下一个对象,等等。它们将解决您的依赖关系,并保留它们。