Вы бы создали интерфейс , который имеет все необходимые методы update \ delete и т. Д., И каждая область хранения (локальная \ web), которую вы хотите использовать, будет реализовывать этот интерфейс.
Во время выполнения вы передаете соответствующий объект области хранения и работаете с интерфейсом. Вашему коду не нужно знать, где находится хранилище, ему нужно только вызывать методы, определенные в интерфейсе.
В качестве примера, это интерфейс, который я создал для реализации средства выбора файлов \ папок, которое работает как на SD-карте, так и на Dropbox, что соответствует вашим собственным требованиям.
public interface IFileChooser {
public List<FileSystemItem> getItems(String Path, FileSystemItemFilter filter);
public Boolean CreateFolder(String Path, String FolderName);
public Boolean DeleteFolder(FileSystemItem itm);
public String getRoot();
public String getParentPath(String path);
public String getSeparator();
public Boolean isRemoteSource();
}