如何安排类和接口以清理数据模型中的体系结构?

时间:2018-08-19 15:53:26

标签: java android architecture

我已经通过以下方式创建了我的应用程序结构:

DataRepository类具有3个成员,它们是接口。每个接口都提供适当的数据。第一个成员接口使用“ Owner”模型数据,第二个成员接口使用“ Dog”模型数据。第三个必须使用“ Breed”模型。第一和第二数据(OwnerDog)是从用户输入的,并本地存储在SQLiteDatabase中,而我有Dog/Owner/SQLDataSources类,它们实现了这些接口。

第三个数据模型是我的问题。我从互联网上下载了这个名为“ Breed”的模型列表,然后我必须将其写入数据库,然后获取List<Breed>。 结果,我的WebBreedDataSource从API上传了List<Breed>,而SQLBreedDataSource用该列表填充了数据库(TableBreed)。因此,这两个类都具有相同的方法getBreeds()。 因此,我不知道其中哪些类必须实现IBreedsDataSource接口?如何安排这个架构整洁?也许我应该创建另一个使用这两者的类并实现IBreed接口

非常感谢您的建议! enter image description here

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则可能会在存储库和数据库/ api控制器之间添加另一个其他类。此类可以实现您的接口来获取您的List<Breeds>,并且还可以在数据库和api之间进行“协调”。

例如:您想获取品种列表,好的,这个“ DataSourceCordinator”对象是这样做的:数据库是否为空?

  • 如果为空,请调用api,填充数据库并检索列表
  • 否则,检索数据库中当前的内容。

您可能需要一些可以以某种方式协调这两个数据源的东西。

还有一点要注意,我认为存储库与您的存储库有些不同,我会将不同的数据源添加到单个存储库中,但是对于同一类型的数据-不会在一个存储库中混合不同类型的数据-只会添加不同的检索方式相同类型的数据

例如

  • 对于品种,您将拥有一个包含两个数据源的存储库- 数据库和api
  • 对于狗,您将拥有一个带有一个数据源的不同存储库-api

现在在每个存储库中,我将协调这些不同的数据源。顺便说一句,这是一个不错的图!