gpt4 book ai didi

java - 如何在模型 View 呈现器模式中使用存储库模式和交互器模式?

转载 作者:行者123 更新时间:2023-12-01 16:34:13 26 4
gpt4 key购买 nike

我正在借助模型 View 演示者模式开发一个应用程序。

我使用 Retrofit,因此我有一个带有端点的 ApiClient 和 ApiInterface。我在 RemoteDataSource 类中实现该接口(interface),并在 Repository 类中调用该接口(interface)。

我的问题是 - 如何利用 Interactor 类使存储库与 Presenter 进行通信?

到目前为止,这是我的代码:

Api接口(interface)

public interface ApiInterface {

@GET("?")
Call<ArrayList<Movie>> getMoviesByTitle(@Query("t") String title,@Query("apiKey") String apiKey);

}

RemoteDataSource 类

private static MovieRemoteDataSource instance;
private final ApiInterface service;

public MovieRemoteDataSource(ApiInterface movieApi) {
service = ApiClient.createService(ApiInterface.class);
}

public static MovieRemoteDataSource getInstance(ApiInterface movieApi) {
if (instance == null) {
instance = new MovieRemoteDataSource(movieApi);
}
return instance;
}

@Override
public void getMovies(String title, String apiKey, final LoadMovieCallBack callback) {
service.getMoviesByTitle(title,apiKey).enqueue(new Callback<ArrayList<Movie>>() {
@Override
public void onResponse(Call<ArrayList<Movie>> call, Response<ArrayList<Movie>> response) {
ArrayList<Movie> movies = response.body();// != null ? //response.body().getTitle() : null;
if (movies != null && !movies.isEmpty()) {
callback.onMoviesLoaded(movies);
} else {
callback.onDataNotAvailable();
}
}

@Override
public void onFailure(Call<ArrayList<Movie>> call, Throwable t) {
callback.onError();
}
});
}

带有回调的数据源接口(interface)

public interface MovieDataSource {
interface LoadMovieCallBack{
void onMoviesLoaded(ArrayList<Movie> movies);
void onDataNotAvailable();
void onError();

}

void getMovies(String title, String apiKey,LoadMovieCallBack callback);

}

存储库

 private MovieRemoteDataSource movieRemoteDataSource;


public MoviesRepository() {//ApiInterface movieApi) {
//this.service = ApiClient.createService(ApiInterface.class);
}

public static MoviesRepository getInstance(ApiInterface service) {
if (instance == null) {
instance = new MoviesRepository();
}
return instance;
}





public void getMovies(String title, String apiKey ) {
movieRemoteDataSource.getMovies(title,apiKey,this);
}

最佳答案

MoviesRepository 中,您应该使用 Callback 声明一个函数。您的演示者 应该实现 MovieDataSource.LoadMovieCallBack 并在调用 MoviesRepository

时传递它
  public void getMovies(String title, String apiKey,MovieDataSource.LoadMovieCallBack callback) {
movieRemoteDataSource.getMovies(title,apiKey,callback);
}

Here Google MVP 已经为待办事项应用程序示例做好了,您可以引用它。但现在它已被弃用,因为 Google 推荐 MVVM

关于java - 如何在模型 View 呈现器模式中使用存储库模式和交互器模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61994216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com