java 存储库模式的Android Repository类示例。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 存储库模式的Android Repository类示例。相关的知识,希望对你有一定的参考价值。
package com.dev.data.source;
import com.dev.data.models.User;
import com.dev.data.source.local.UserLocalDataSource;
import com.dev.data.source.network.UserNetworkDataSource;
import okhttp3.ResponseBody;
/**
* Concrete implementation to load Users from the data sources into a cache.
*/
public class UserRepository implements UserDataSource {
private UserLocalDataSource userLocalDataSource;
private UserNetworkDataSource userNetworkDataSource;
private static UserRepository mInstance;
private UserRepository() {
userNetworkDataSource = UserNetworkDataSource.getInstance();
userLocalDataSource = new UserLocalDataSource();
}
public static UserRepository getInstance() {
if (mInstance == null)
mInstance = new UserRepository();
return mInstance;
}
@Override
public void getUser(GetUserCallback callback) {
userLocalDataSource.getUser(new GetUserCallback() {
@Override
public void onUserLoaded(User user) {
callback.onUserLoaded(user);
}
@Override
public void onDataNotAvailable(Throwable err) {
if (err.getMessage().equals("Data is null")) {
userNetworkDataSource.getUser(new GetUserCallback() {
@Override
public void onUserLoaded(User user) {
callback.onUserLoaded(user);
userLocalDataSource.saveUser(user);
}
@Override
public void onDataNotAvailable(Throwable err) {
callback.onDataNotAvailable(err);
}
});
}
}
});
}
@Override
public void saveUser(User user) {
userLocalDataSource.saveUser(user);
}
@Override
public void updateUser(User user, GetUserCallback callback) {
userNetworkDataSource.updateUser(user, new GetUserCallback() {
@Override
public void onUserLoaded(User user) {
userLocalDataSource.updateUser(user, new GetUserCallback() {
@Override
public void onUserLoaded(User user) {
callback.onUserLoaded(user);
}
@Override
public void onDataNotAvailable(Throwable err) {
callback.onDataNotAvailable(err);
}
});
}
@Override
public void onDataNotAvailable(Throwable err) {
callback.onDataNotAvailable(err);
}
});
}
@Override
public long getId() {
return userLocalDataSource.getId();
}
@Override
public void setId(long id) {
userLocalDataSource.getUser(new GetUserCallback() {
@Override
public void onUserLoaded(User user) {
user.setId(id);
userNetworkDataSource.updateUser(user, new GetUserCallback() {
@Override
public void onUserLoaded(User user) {
userLocalDataSource.setId(id);
}
@Override
public void onDataNotAvailable(Throwable err) {
}
});
}
@Override
public void onDataNotAvailable(Throwable err) {
}
});
}
}
以上是关于java 存储库模式的Android Repository类示例。的主要内容,如果未能解决你的问题,请参考以下文章
java 存储库模式的Android Repository类示例。
使用 maven 存储库将 java 库添加到 Android Studio 项目