设计模式以访问来自不同来源的相同数据

use*_*607 6 java oop android design-patterns

我有这个问题:我有数据可以保存本地和远程云,以便能够从每个设备获取它们.现在,如果有连接,我必须从远程加载它们(如果有没有连接的更新,最终更新它们)并在本地保存任何更改,如果没有连接,我可以并且只能使用本地源.我首先想到了一个策略,但它显然是错误的,比我想到的代理,但我不知道它是否合适.在我的设计过程中,我创建了一个managerPreferitiDB,它可以根据情况(可能带有State模式)访问localPreferitiDB(用于本地访问)和/或cloudPreferitiDB(用于远程访问).我认为我应该有一个preferitiRetriever接口,由他们两个实现,然后在我的managerPreferitiDB代理中有两个或更多preferitiRetriever.

有什么建议吗?是否有更适合这种情况的模式?我正在使用Java for Android,谢谢

mxb*_*mxb 2

没有适合您的场景的 GoF(四人帮)模式。当您面临涉及本地缓存和远程存储的更复杂的问题时,GoF 模式更加底层。GoF 模式不解决网络问题。

也许您可以在 Fowler 的《企业应用程序架构模式目录》中找到一些有用的东西,例如Remote FacadeData Transfer Object,但这些只是可能解决方案的一部分。

我认为这是子系统设计的问题,因此您需要定义一个合适的抽象,然后在适合实现细节的情况下使用 GoF 或其他模式。

您定义来表示缓存/远程存储子系统的抽象不必响应特定的单一模式;据我所知,目前还没有这样一个系统的公开蓝图。