外观模式

隐藏系统复杂性,向外部提供一个可访问的接口

public interface DataSource {
    interface Callback {
        void success(T data);
        void error(String message);
    }

    void getSimpleData(Callback callback);
}

public class LocalDataSource implements DataSource {
    @Override
    public void getSimpleData(Callback callback){
        // 从数据库中获取数据
    }
}

public class RemoteDataSource implements DataSource {
    @Override
    public void getSimpleData(Callback callback){
        // 从网络中获取数据
    }
}

public class DataRepository implements DataSource{
    private DataSource localDataSource;
    private DataSource remoteDataSource;

    @Override
    public void getSimpleData(Callback callback){
        localDataSource.getSimpleData(new Callback(){
            @Override
            public success(String data){
                if(Strings.isEmpty(data)){
                    remoteDataSource.geSimpleData(callback);
                } else {
                    callback.success(data)
                }
            }
            ...
        });
    }
}

隐藏具体的数据来源,只对外提供获取数据的方法.

你可能感兴趣的:(外观模式)