我正在开发一个使用服务器数据的Android应用程序。我有一个单例应用程序对象,其中包含整个应用程序中使用的数据(用户,其地址等)。
到现在为止,我正在动态填充这些数据,即。当我打开AddressesActivity时,我会在显示列表之前调用填充Application中数据的地址webService。
然而,随着应用程序的增长,我需要在不同的地方使用相同的数据,我开始复制代码来填充数据。另外,我必须一直进行检查(如果app.addresses == null callAddressesWebService等)。
我有一些想法很好地重构这个,但我想知道是否有一个专门针对这个特定问题的着名模式?
修改
这是我开始做的,有什么见解吗?
public abstract class LazyLoaded<T> {
private T localValue = null;
private boolean upToDate = false;
public void get(final SingleResultCallback<T> successCallback, final ErrorCallback errorCallback) {
if (getLocalValue() != null && isUpToDate()) {
successCallback.onResponse(getLocalValue());
}
else {
update(
new EmptyCallback() {
@Override
public void onResponse() {
get(successCallback, errorCallback);
}
},
errorCallback
);
}
}
protected abstract void update(EmptyCallback successCallback, ErrorCallback errorCallback);
protected T getLocalValue() {
return localValue;
}
protected void setLocalValue(T localValue) {
this.localValue = localValue;
this.upToDate = true;
}
protected boolean isUpToDate() {
return upToDate;
}
public void setObsolete() {
upToDate = false;
}
}