Design patterns 在处理多个数据源时,如何在MVP体系结构中使用该模型

Design patterns 在处理多个数据源时,如何在MVP体系结构中使用该模型,design-patterns,model-view-controller,user-interface,architecture,mvp,Design Patterns,Model View Controller,User Interface,Architecture,Mvp,现在,人们似乎喜欢以稍微不同的方式使用MVP模式,有些人喜欢视图完全不知道模型,让演示者提供数据,而有些人喜欢将模型交给视图,让视图直接从模型中读取数据。就我个人而言,我更喜欢后者 在阅读MVP时,似乎所有的示例都集中在或多或少使用一种数据类型的CRUD视图上。然而,在现实世界中,我们有可以处理多个数据源的视图。例如,假设我们有一个设置视图,它可以处理不同类型的数据,例如SystemSettings、WorkflowSettings和UserSettings。我们不要讨论UX,这只是为了举个例子

现在,人们似乎喜欢以稍微不同的方式使用MVP模式,有些人喜欢视图完全不知道模型,让演示者提供数据,而有些人喜欢将模型交给视图,让视图直接从模型中读取数据。就我个人而言,我更喜欢后者

在阅读MVP时,似乎所有的示例都集中在或多或少使用一种数据类型的CRUD视图上。然而,在现实世界中,我们有可以处理多个数据源的视图。例如,假设我们有一个设置视图,它可以处理不同类型的数据,例如SystemSettings、WorkflowSettings和UserSettings。我们不要讨论UX,这只是为了举个例子


我的第一个问题是,如何为使用多个数据源的视图定义模型?我的意思是,您的视图是否有设置不同型号setSystemSettings、setWorkflowSettings等的方法,。。。或者您是否将实际的域模型包装在DTO中,并在您的视图中使用简单的SetModelSettingsTo方法?

对我来说,“模型”是抽象的。我现在将模型视为“演讲者完成工作所需的任何东西”

因此,根据您的示例,我的方法可能是将模型定义为RepositoryFactory,它允许演示者创建获取数据所需的适当存储库


这仍然允许进行单元测试。

模型是一个通过服务进行交互的层,就像其他受MVC启发的模式一样,然后处理域对象和存储抽象之间的交互。您不会为视图定义任何内容。其要点是,数据由演示者提供给视图。在MVP模式的doplhin smalltalk定义中,模型通常是域模型,位于域层。无论如何,如果你考虑模型一个层或其他东西,你可能有一个视图处理多个类型的数据。我的问题是,如何处理这个问题,是将多个域模型包装到一个对象中,并将其提供给视图,还是视图直接处理多个域模型?