Pojo类的依赖注入

Pojo类的依赖注入

问题描述:

此刻我正试图理解依赖注入。比方说,我有以下类:Pojo类的依赖注入

专辑

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做到这一点?关于这一点我并没有真正理解。这只是“将构造函数”移出课程吗?

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

理论上这是可能的,当然。你仍然需要一个循环,但是现在你将创​​建你的组件并传递参数,以便它们可以分别创建它们的Artist,它们的Album和它们的Song。一个ArtistComponent,它提供其ArtistAlbumComponent

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


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

这只是“移动构造函数”出类吗?

匕首不会奇迹般地创建对象。如果你有一个依赖项,你仍然在你的构造函数中声明这个依赖项。 Dagger会为你调用正确的参数,构造函数为,并且可能会保留创建的对象以备后用(范围)。

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