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
取决于Album
和Artist
和Album
取决于Artist
。比方说,我从数据库中获取所有请求的字段。目前所有成员都通过构造函数传入。通常我会多次创建相同的专辑对象(在同一专辑的每首歌曲的循环中)。这是可以通过依赖注入避免的东西吗?
我该如何用Dagger2做到这一点?关于这一点我并没有真正理解。这只是“将构造函数”移出课程吗?
答
如果你使用Dagger创建你的模型类,你肯定是做错了什么。
理论上这是可能的,当然。你仍然需要一个循环,但是现在你将创建你的组件并传递参数,以便它们可以分别创建它们的Artist
,它们的Album
和它们的Song
。一个ArtistComponent
,它提供其Artist
到AlbumComponent
等
最后你仍然有一个循环,但这次只是创建组件来创建你需要的对象。您在这里获得的唯一一件事是开销很大,而且比以前更多的对象创建。所以不,请不要在这里使用Dagger。
依赖注入旨在将您的业务逻辑链接在一起。如果您有从数据库中读取的ArtistDao
,则可能还有一个要求所述DAO工作的ArtistPresenter
。 ArtistDao仍然读取并创建艺术家(数据模型),但您可以使用Dagger创建DAO并将其传递给演示者。
这只是“移动构造函数”出类吗?
匕首不会奇迹般地创建对象。如果你有一个依赖项,你仍然在你的构造函数中声明这个依赖项。 Dagger会为你调用正确的参数,构造函数为,并且可能会保留创建的对象以备后用(范围)。
依赖框架旨在减少样板,创建一个对象,将其传递给下一个对象等等。它们将解决您的依赖关系,并将它们保留。