在MVC框架中,实用类可以成为模型类吗?

9

我正在设计一个MVC框架,但不知道应该把实用类放在哪里。我在某个地方读到说实用类是模型类。这种思路正确吗,还是它们是一些独立的类?

3个回答

8

这取决于这些实用类正在做什么。MVC的主要思想是将表示层(V和C)与其余应用程序(M)分离。如果您的实用程序类处理与表示层相关的事物,请将它们放置在适当的包中,例如ViewHelpers或InputHandlers。如果实用函数涉及其他任何内容,请查看它们最适合哪个模型层,例如DataAccess Utilities放入DAO包中,而MailHelper可能放入Services包中等。


我读过一本书,书中说模型是业务层和/或实用程序中的类。拥有一个ViewHelper的想法就像制作控制器和视图的混合体。你怎么看? - rix501
1
@rix501 控制器处理来自UI的用户输入并将请求委托给模型。ViewHelper不应处理用户输入。主要思想是将视图完成渲染所需的任何逻辑与您的视图模板分离。您在书中阅读到的区别是正确的。术语“实用程序”只是含糊不清。 - Gordon

0
如果它不是存储数据的表示形式,那么它可能不是一个模型类。即使它仍然表示某种类型的存储数据,但如果其行为与其余模型截然不同,则可能无法与其余模型一起使用。
实用函数可以成为它们所属的任何类的一部分,包括模型、视图或控制器。如果它们更加通用,那么它们就有点像“MVC”设计之外的东西。

模型不仅仅是数据库! - Gordon
2
你知道的,当我最开始使用SO时,我确实遇到了很多关于MVC中模型层的争论和困惑。过了一段时间,我意识到有很多错误的MVC实现方式。这是在我开始维护一个至少用三种不同且糟糕的方式实现MVC的旧代码库之后的事情。然而,最具连贯性的一点是,模型层“对存储数据对象进行建模”。这并不意味着它只是一个ORM层,而是应该知道它们如何相互交互以及如何存储和检索它们的数据。 - staticsan

0

模型类可以包含您的数据访问代码、应用程序逻辑,因此将其放置在模型中是可以的。

最好的方法是在模型文件夹中创建一个实用程序文件夹,并将实用程序类放置在其中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接