我将描述我必须解决的问题,然后提出我的问题。

问题

我的问题很简单,或者看来。我需要访问数据库,并获取体育交易实体的集合。其中包括“丹佛掘金将PlayerX交易为PlayerY”之类的内容。一旦有了事务实体的集合,就需要将内容以特定格式输出到.txt文件,大致类似于以下内容:

Title
  Sport1
    League1
      Transaction1
      Transaction2
      ...
    League2
      Transaction1
      Transaction2
  Sport2
  etc.

体育和联赛的顺序很重要。首先是棒球,然后是足球,等等。如果一项运动没有交易,则该运动的文件中将不包含任何内容。那几乎就是程序。

我正在使用ORM,并且Transaction实体非常大,其中有很多我不需要显示的额外字段。基于这个原因,我只想将上面的信息映射到一个 View 模型。

问题

首先,这里没有“域”,因此不需要分解的域Transaction对象,对吗?我需要做的就是从数据库实体映射到ViewModel?

其次,我在存储库方法调用中编码了多少“ View ”逻辑?我是否要获得交易实体的集合,然后在 Controller 中对它们进行排序?还是应该由存储库为我进行排序?我的感觉是,如果让存储库类按照 View 所需的顺序对事务进行排序,那么这将分散 View 逻辑,这很令人困惑。另一方面,让数据库进行排序可以提高性能。

第三, Controller 在构造 View 模型方面做了多少工作?例如,就像我上面所说的,任何没有交易的运动都不应显示。 Controller 应该检查并明确从 View 模型中排除这些事务,还是 View 应做出检查和决定?

感谢您抽出宝贵的时间来回复。

最佳答案



对我来说听起来还行



我认为在数据库中排序是可以的,因为这样可以提高性能。多少“风景”?取决于 View 。请参阅下一个答案。



您正在转储为文本,因此这里的“ View ”仅是您要添加到缩进中的制表符或空格的数量。但是,如果它是GUI树组件怎么办?然后,您必须将数据推送到节点中,并提供有关哪个节点是哪个节点的子节点的信息,然后才能为 Controller 工作。

我认为MVC的主要思想是使切换每个组件更加容易。我的意思是,如果要替换例如从纯文本到GUI树组件的典型树可视化结构很容易,那么您的MVC就是经过精心设计的。如果不是这样,则可能是各层之间的耦合程度仍然很高,您无法正确地重用其他层。

关于oop - 在这个简单的MVC场景中,我应该把这种逻辑放在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24922658/

10-11 22:14
查看更多