模型和视图交互的 mvc 模式有多严格?
How strict is the mvc pattern with model and view interactions?
我对模型和视图如何交互感到困惑
我正在使用 mvc 模式制作一个简单易用的应用程序,我看到一篇文章说你不应该将模型值直接传递给视图,这使得项目比我想象的更复杂(我是相对较新的编程,这是我第一次尝试设计模式)。
但是后来我和一个人谈过,他说那不是真的,你可以直接发送模型数据来查看,他甚至没有使用 类 或某种分组来分隔功能他只是把它们放在单独的文件中。
我想知道是否有我找不到的指南,或者我们可以做任何我们想做的事,只要它们有点分开。我也想阅读一篇文章或指南。
因为,我不是 100% 确定您尝试应用 MVC 模式的上下文,可以在 GoF 1995 年出版的书籍设计模式:可重用面向对象软件的元素中找到对 MVC 的一个很好的通用解释。
在书中,他们陈述如下。
The Model is the application object, the View is its screen
presentation, and the Controller defines the way the user interface
reacts to user input.
可以找到更可靠的解释 from Martin Fowler 他还
为使用演示模型的模型视图控制器的变体提供了理由。
如果您指的是 Spring MVC,那么有一些神奇的东西可以模糊界限。但总的来说,您有一个控制器来表示用户(网络请求)与之交互的一些屏幕或封装的功能。控制器提供从域派生的响应,通常通过 Spring 服务(即@Service)。域(模型)对视图一无所知,视图可能对域一无所知。
鉴于此,视图应该从模型派生。但情况并非总是如此,因为有时我们如何将事物呈现在屏幕上并不是在我们的领域中建模事物的最佳逻辑方式 - 更不用说,领域应该与呈现无关。这引出了 Fowler 关于 Presentation Model 的论点,Presentation Model 是属于 Presentation 的模型。
I call this a Presentation Model because it's a model that is really
designed for and thus part of the presentation layer.
Microsoft 采纳了这个想法,并 运行 在称为 MVVM(模型视图视图模型)的 MVC 变体中采用了它。
您可以在 Microsoft's documentation on ASP.Net Core 中阅读更多相关信息。
所以,回到您最初的问题“您应该将模型直接传递给视图吗?”如果您使用的是 MVC,那么控制器就是提供交互的东西。但是如果你真的要问,“你能把你的视图直接绑定到模型上吗?”如果您的模型具有您需要的所有内容,那么可以按照您的视图需要的方式进行组织,那么当然可以。如果它足够简单,也许这就是要走的路。否则,您可以使用 Presentation Model 或 MVVM 之类的东西。
我对模型和视图如何交互感到困惑
我正在使用 mvc 模式制作一个简单易用的应用程序,我看到一篇文章说你不应该将模型值直接传递给视图,这使得项目比我想象的更复杂(我是相对较新的编程,这是我第一次尝试设计模式)。
但是后来我和一个人谈过,他说那不是真的,你可以直接发送模型数据来查看,他甚至没有使用 类 或某种分组来分隔功能他只是把它们放在单独的文件中。
我想知道是否有我找不到的指南,或者我们可以做任何我们想做的事,只要它们有点分开。我也想阅读一篇文章或指南。
因为,我不是 100% 确定您尝试应用 MVC 模式的上下文,可以在 GoF 1995 年出版的书籍设计模式:可重用面向对象软件的元素中找到对 MVC 的一个很好的通用解释。
在书中,他们陈述如下。
The Model is the application object, the View is its screen presentation, and the Controller defines the way the user interface reacts to user input.
可以找到更可靠的解释 from Martin Fowler 他还 为使用演示模型的模型视图控制器的变体提供了理由。
如果您指的是 Spring MVC,那么有一些神奇的东西可以模糊界限。但总的来说,您有一个控制器来表示用户(网络请求)与之交互的一些屏幕或封装的功能。控制器提供从域派生的响应,通常通过 Spring 服务(即@Service)。域(模型)对视图一无所知,视图可能对域一无所知。
鉴于此,视图应该从模型派生。但情况并非总是如此,因为有时我们如何将事物呈现在屏幕上并不是在我们的领域中建模事物的最佳逻辑方式 - 更不用说,领域应该与呈现无关。这引出了 Fowler 关于 Presentation Model 的论点,Presentation Model 是属于 Presentation 的模型。
I call this a Presentation Model because it's a model that is really designed for and thus part of the presentation layer.
Microsoft 采纳了这个想法,并 运行 在称为 MVVM(模型视图视图模型)的 MVC 变体中采用了它。
您可以在 Microsoft's documentation on ASP.Net Core 中阅读更多相关信息。
所以,回到您最初的问题“您应该将模型直接传递给视图吗?”如果您使用的是 MVC,那么控制器就是提供交互的东西。但是如果你真的要问,“你能把你的视图直接绑定到模型上吗?”如果您的模型具有您需要的所有内容,那么可以按照您的视图需要的方式进行组织,那么当然可以。如果它足够简单,也许这就是要走的路。否则,您可以使用 Presentation Model 或 MVVM 之类的东西。