gpt4 book ai didi

model-view-controller - 在 MVC Web 应用程序中,谁负责过滤大量的对象、 View 或模型?

转载 作者:行者123 更新时间:2023-12-04 06:32:43 25 4
gpt4 key购买 nike

我有一个基于 MVC 设计的 Web 应用程序。

我有一个包含大量对象(论坛线程)的数据库,我无法一次加载到内存中。我现在想用不同的过滤器来显示(部分)这个集合(有点像 stackoverflow 对按日期、投票、标签等排序的问题所做的)。

我在哪里实现过滤逻辑?在我看来,这必须进入应用程序的模型部分,因为只有模型与数据库交互(在我的实现中)。如果我将过滤作为 View 的一部分,那么 View 必须直接访问数据库以获取过滤对象的列表,对吗?我想避免这种情况,因为它将数据库布局暴露给 View 。但同时,在应用程序的 View 部分应该实现显示相同数据的不同 View ,因为它们只是-不同浏览次数 相同的数据。

那么我该如何解决这个问题呢?我是否创建了一个额外的模型,比如 FilteredThreadsList,让它记住要使用的过滤器,然后使用 FilteredView 来显示 FilteredThreadsList 吐出的线程列表?

或者我是否必须构建一个允许 View 查询数据库中某些线程对象的 ThreadQueryier,以便我可以在 View 中使用过滤逻辑而不暴露数据库后端?

最佳答案

从架构的角度来看,型号 应该有过滤代码。之所以如此,是因为在许多应用程序中,用于过滤的代码并非微不足道,并且其中包含大量域逻辑。 (想想从股票列表中过滤掉涨幅最大的股票)。从您的示例来看,它看起来也一样,因为您可能希望按投票或日期或标签进行过滤,然后按已回答或未回答等进行过滤。

在一些处理实体搜索/列表并允许创建/读取/更新/删除实体的非常简单的应用程序中,分页、排序和过滤逻辑通常是非常通用的,可以在继承的 Controller 基类中实现所有特定于实体的 Controller 类。

底线是:如果您的过滤逻辑是通用的,则将其放入 Controller 中,否则将其放入模型中。

关于model-view-controller - 在 MVC Web 应用程序中,谁负责过滤大量的对象、 View 或模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5209615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com