在Android clean architecture中,正确的领域映射位置应该是在domain层的接口中定义相应的方法,并在数据源层的具体实现中进行实现。
例如,我们在domain层定义一个存储用户信息的接口:
public interface UserRepository {
void saveUser(User user);
User getUser(String userId);
}
然后,在数据源层,我们可以有多个具体的实现,例如可以使用本地的SharedPreferences、网络的API等。例如,使用SharedPreferences实现的UserRepository:
public class SharedPreferenceUserRepository implements UserRepository {
private SharedPreferences sharedPreferences;
public SharedPreferenceUserRepository(SharedPreferences sharedPreferences) {
this.sharedPreferences = sharedPreferences;
}
@Override
public void saveUser(User user) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("user_id", user.getUserId());
editor.putString("user_name", user.getUserName());
editor.apply();
}
@Override
public User getUser(String userId) {
String userName = sharedPreferences.getString("user_name", "");
return new User(userId, userName);
}
}
这样,在应用的其他部分中,就可以通过调用domain层的UserRepository接口来进行用户信息的存储和获取了。在更换具体实现时,只需要更改数据源层的代码而不用改变应用其他部分的代码,实现了解耦合。
上一篇:AndroidCleanArchitectureUseCase的中文翻译和示例
下一篇:AndroidClientHandler存在问题:是否可能编辑src/Mono.Android/Xamarin.Android.Net/AndroidClientHandler.cs文件?