保存本地对象的客户端/服务器模式?

时间:2017-05-19 08:45:35

标签: design-patterns

我正在开发一个使用服务器数据的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;
    }
}

1 个答案:

答案 0 :(得分:0)

缓存模式就是答案 - 请看this