我的应用程序有一个活动和两个片段。该活动仅用作片段容器。其中一个片段显示文本数据,第二个片段将相同的数据显示为图表。这些数据来自远程JSON API。由于MVP要求我们为每个视图(模块、模型、Presenter、Repository等)复制相同的结构,因此我的应用程序在每个片段中都从JSON API请求数据,共两次。我如何构建更高效的架构以使其符合MVP要求?
请参见下面我实现的两个片段的代码:
模块
请参见下面我实现的两个片段的代码:
模块
@Module
public class PollutionLevelsModule {
@Provides
public PollutionLevelsFragmentMVP.Presenter providePollutionLevelsFragmentPresenter(PollutionLevelsFragmentMVP.Model pollutionLevelsModel) {
return new PollutionLevelsPresenter(pollutionLevelsModel);
}
@Provides
public PollutionLevelsFragmentMVP.Model providePollutionLevelsFragmentModel(Repository repository) {
return new PollutionLevelsModel(repository);
}
@Singleton
@Provides
public Repository provideRepo(PollutionApiService pollutionApiService) {
return new PollutionLevelsRepository(pollutionApiService);
}
}
代码库
public class PollutionLevelsRepository implements Repository {
private PollutionApiService pollutionApiService;
public PollutionLevelsRepository(PollutionApiService pollutionApiService) {
this.pollutionApiService = pollutionApiService;
}
@Override
public Observable<Aqicn> getDataFromNetwork(String city, String authToken) {
Observable<Aqicn> aqicn = pollutionApiService.getPollutionObservable(city, authToken);
return aqicn;
}
}