nol*_*man 2 mvp android repository-pattern android-sharedpreferences retrofit2
我正在使用MVP构建应用程序,而我正在使用存储库模式.我有一个本地数据源,这是一个存储某些信息的数据库.我有一个远程数据源,在其中使用Retrofit,我发出了API请求.该请求有一个@Query,这是一个存储在SharedPreferences中的String.我想将SharedPreferences作为数据源添加到存储库,但由于远程数据源应该使用这些SharedPreferences--这将是与远程数据源不同的数据源 - 我不再认为这种体系结构如此清晰.
非常感谢您的帮助.
Jah*_*old 10
我想很多人都会使存储库的概念复杂化.存储库模式实际上只是Facade模式的一种特定类型.它只是一个位于真实数据源(模型)和消费者之间的抽象层.
假设我们有一个处理天气数据的系统.在这种情况下,我发现有三个Modal类没有错:
WeatherHttpWeatherDbWeatherPrefs这些都可以是通过构造函数注入的存储库类的成员.所有这三个都隐藏在单个存储库类后面的使用者(UI)中:
WeatherRepository可能只有一个公共方法:
public void getWeatherForecasts(Callback<List<Forecast> forecastCallback);
Run Code Online (Sandbox Code Playgroud)
或者Rx:
public Observable<List<Forecast>> getWeatherForecasts();
Run Code Online (Sandbox Code Playgroud)
在该方法的幕后,您可能会进行http调用以获取最新数据,数据库调用以保存大部分详细信息,并使用共享prefs编辑来保存上次获取数据的时间戳.这个想法是你可以随时改变实施,消费者也不在乎.
实现存储库最重要的一点是您不得泄漏实现细节.存储库的公共API不应公开网络类,数据库DAO或SharedPreference键.
| 归档时间: |
|
| 查看次数: |
2553 次 |
| 最近记录: |