使用上下文实现存储库模块



我想实现Repository模块来处理数据操作。我在目录中有 JSON 文件row并希望创建具体的Repository实现以从文件中获取数据。我不确定我是否可以在构造函数或方法中使用Context作为属性Repository.

例如

public class UserRepository {
UserRepository() {}
public List<User> loadUserFromFile(Context contex) {
return parseResource(context, R.raw.users);
}
}

恕我直言,你应该使用像Dagger2这样的DI(依赖注入(,为你提供类似Context的东西,

应用模块.class

@Module
public class AppModule {
private Context context;
public AppModule(@NonNull Context context) {
this.context = context;
}
@Singleton
@Provides
@NonNull
public Context provideContext(){
return context;
}
}

我的应用程序.class

public class MyApplication extends Application {
private static AppComponent appComponent;
public static AppComponent getAppComponent() {
return appComponent;
}
@Override
public void onCreate() {
super.onCreate();
appComponent = buildComponent();
}
public AppComponent buildComponent(){
return DaggerAppComponent.builder()
.appModule(new AppModule(this))
.build();
}
}

用户存储库.class

@Singleton
public class UserRepository {
UserRepository() {}
@Inject
public List<User> loadUserFromFile(Context contex) {
return parseResource(context, R.raw.users);
}
}

快乐编码..!!

我认为将上下文作为属性传递没有任何害处。如果您不喜欢这个想法,那么您可以通过一种方便的方法检索上下文:在 Android 上获取"上下文"的静态方式?

最新更新