Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当来自服务层的数据需要在不同的表示实体之间共享时,该怎么办_C#_Model View Controller_Mvp_Dto_Service Layer - Fatal编程技术网

C# 当来自服务层的数据需要在不同的表示实体之间共享时,该怎么办

C# 当来自服务层的数据需要在不同的表示实体之间共享时,该怎么办,c#,model-view-controller,mvp,dto,service-layer,C#,Model View Controller,Mvp,Dto,Service Layer,首先,如果我把术语弄错了,请原谅。术语很重要,但相似的概念通常用不同的术语表达。 假设我的表示层中有两个定义不好的“实体”,它们必须使用从服务层检索到的相同数据。实体应该是什么 这些实体是否都应该是MVP的演示者?如果是这样,创建两个MVP三元组来处理相同的数据(当然是以不同的方式)有意义吗 一个演示者和多个视图是否更好? 或者这意味着模型过于臃肿,应该分为不同的模型 虽然我确信我们的代码中存在设计问题,但我注意到我们有几个类,甚至不能定义为Presenter,它们独立使用来自服务层的相同数据,

首先,如果我把术语弄错了,请原谅。术语很重要,但相似的概念通常用不同的术语表达。 假设我的表示层中有两个定义不好的“实体”,它们必须使用从服务层检索到的相同数据。实体应该是什么

这些实体是否都应该是MVP的演示者?如果是这样,创建两个MVP三元组来处理相同的数据(当然是以不同的方式)有意义吗

一个演示者和多个视图是否更好? 或者这意味着模型过于臃肿,应该分为不同的模型


虽然我确信我们的代码中存在设计问题,但我注意到我们有几个类,甚至不能定义为Presenter,它们独立使用来自服务层的相同数据,这让我非常困扰。

在MVP中,Presenter与每个视图紧密耦合(因为它控制视图的行为)。这意味着,如果您有多个差异很大的视图,那么您还需要有多个演示者

但视图和演示者都不保存任何数据。模型表示应用程序中数据的当前状态

因此,如果您从服务层获取的数据在两种情况下都以相同的方式处理(只是呈现方式不同),那么您应该有一个模型,供两个演示者引用


但是,如果您获取的只是某种“原始”数据,这些数据的处理方式非常不同,那么您可能还应该为每个演示者/视图创建自己的模型。模型可以引用获取的数据,这些数据可以保存在服务层或更高级别的模型对象中。

从服务层加载它们一次,必要时使用检索到的引用。因此,1个模型以及任意数量的演示者和视图。您的意思是将同一个模型注入不同的MVP内存,请注意,如果我没记错的话,MVP有多种可能的实现。我很肯定有人在考虑由一个演示者管理多个视图的选项。然而,我同意这是没有道理的。可能还有其他来源,我指的是福勒的定义:。你们可以看到MVP被他分为监督控制员和被动视图。很明显,在被动视图中,控制器/演示者与视图紧密耦合,因为视图什么都不做。但即使是在监督控制器时,你也能从他那里找到这样一句话:“[…]控制器仍然与其屏幕紧密耦合,需要对屏幕的细节有相当深入的了解。”