统一本地和存储库泛型类型返回到存储库模式

时间:2017-12-13 11:54:56

标签: android generics repository-pattern rx-java2 android-room

我想使用存储库模式从我的viewModel class存储库getPosts调用。

来自getPostsArrayfromLocalRoomDB

成功调用getPostsArrayfromLocalRoomDB [来自Retrofit的调用]和viewModel [来自Room db的调用]

我实现了一个存储库接口和一个RepositoryImpl class 在存储库中进行 Remote Retrofit 调用:

 @Override
public Flowable<List<PostFromJsonModel>> getPostsArrayFromRetrofitRemote(String tags) {
//notice <PostFromJsonModel>

      return postsFromRemoteDataSource.getAllRemote(tags).toFlowable(BackpressureStrategy.BUFFER);
}

以及调用Room DB的 Local RoomDB

 @Override
public Flowable<List<PostFromRoomDB>> getPostsArrayfromLocalRoomDB(String tags) {
//notice <PostFromRoomDB>
    return postsfromLocalDataSource.getAllLocalDb();
}

现在我想要一个不可知的调用getPosts,这样我就可以在这个方法中插入我的业务逻辑来调用数据库和REST API, 问题是我不知道应该归还什么:

what_I_should_return?

public   getPosts(String tags){

//I know the business logic here, no need to suggest this

}

我尝试Flowable<List<?>, Flowable<List<T>等等,但我不知道如何将两种通用类型PostFromJsonModelPostFromRoomDB结合起来统一调用。

1 个答案:

答案 0 :(得分:0)

知道了,我只需要返回一个没有参数的简单Flowable。有趣的是,因为我在视图中订阅了在viewModel中声明Flowable所需的内容。