我在VIPER建筑模式的背景下寻找这个问题的答案-
如果你有一个可与既有的应用程序web api
和database
多少dataManagers
,你应该有一个,两个或三个?
案件
一个) dataManager
b) APIDataManager
和LocalDataManager
c) dataManager
,APIDataManager
和LocalDataManager
在哪里
A)的interactor
一个单一的会谈dataManager
,讨论对您的任何服务(远程或本地).
B)该interactor
知道的区别local
和remote
信息-并呼吁无论是APIDataManager
或LocalDataManager
,分别跟远程和本地服务.
c)interactor
与将军的唯一对话dataManager
,将军dataManager
随后与APIDataManager
和将会谈LocalDataManager
编辑
可能没有确定的解决方案.但任何输入都将非常感激.
VIPER和The Clean Architecture都没有规定所有交互者都必须只有一个数据管理器.引用的VIPER文章仅使用一个管理器作为抽象出特定存储实现的示例.
交互器对象实现特定于应用程序的业务规则.如果应用程序所做的是与服务器通信,然后转身并与本地磁盘存储器通信,那么交互者就知道这一点是完全正常的.更重要的是,一些交互者必须完全管理这个.
不要忘记正常的对象组合规则也适用于交互者.例如,您从一个从服务器获取数据并将其保存到本地存储的交互器开始.如果它太大,你可以创建两个新的交互者,一个进行提取,另一个保存到本地商店.然后,您的原始交互器将包含这些新的交互器并将其所有工作委托给它们.如果遵循定义边界的规则,则在执行提取类重构时,您不必更改使用新复合交互器的对象.
另请注意,通常建议不要使用管理器或控制器结尾命名对象,因为它们的角色不完全清楚.您可以将与服务器通信的接口命名为APIClient
,即抽象本地存储的接口,例如EntityGateway
或者EntityRepository
.