php - 我很困惑,构建 MVC 或 MVVM 设计模式的真正方法是什么?

标签 php model-view-controller mvvm

<分区>

所以我一直在寻找更多关于 MVC 设计模式的教程和文章来加深我对它们的理解,我开始怀疑我是否做错了。所以是的,这些模式的目标是使代码可重用并尽量减少重复代码,对吗?

我看到过各种解释这些设计模式的方式,这让我有点困惑。过去我认为这是模型和 View 之间的 Controller 作为中介的方式,但现在我知道那是错误的, View 实际上不仅仅是一个模板。然后我还在某处(我想在这里)读到,在真正的 MVC 模式中,根据定义只有一个模型,所有其他“模型”只是单个模型的不同方面。是这样吗?这是分离代码并使其可重用的最佳方式吗?这在代码中看起来如何?我在其他地方又读到,对于网络应用程序,最好坚持 MVVM 模式。

所以现在我有点困惑。在 Web 应用程序中分离关注点并使代码可重用的最有效模式是什么?我不仅希望看到此模式的描述,而且希望看到一个简短的代码示例,以便更好地理解它。

最佳答案

So yeah the goal of those patterns are to make code reusable and to minimize repeated code, correct?

Is this the best way to separate code and make it reusable?

没有。真的不是。

MVC 和受 MVC 启发的模式的目标是将业务逻辑(模型层)与用户界面隔离开来。在 UI 内 - 将其划分为管理输入和输出。

基本上,MVC 和受 MVC 启发的模式是架构设计模式,实现了称为 Separation of Concerns 的原则。 .

Then I also read somewhere (I think here) that in a true MVC pattern, there is by definition only one model and all the other "models" are just different facets of the single model. Is this the case?

没有。模型不是一个“东西”(类、对象)。这是一个layer .就像您可以说所有 Controller 和 View 都包含在表示层或 UI 层中一样。

人们所说的“模型”通常是 domain objects或者(更糟糕的情况)某种形式的 active record实现。

And again somewhere else I read that for web-applications it is better to stick to the MVVM pattern.

MVVM 模式在 View 层和模型层之间添加了另一层。它最适用于您无法控制 View 或/和模型层的实现的情况。

大多数人将它与 presentation object 的使用混淆了(M.Fowler 有这种给所有东西加上“模型”的坏习惯,这会造成无限的困惑) 概念。表示对象旨在隔离 UI 逻辑的可重用部分。

How would that look like in code?

创建 MVC 和受 MVC 启发的模式是为了管理大型代码库。当简单地使用面向对象的做法不足以使代码易于理解时,您可以应用 MVC 模式。您可以通过向代码库添加额外的约束 来实现。 MVC 不会向您的应用程序添加任何新内容。相反,它限制了可以编写代码的位置和内容。

“排序代码示例”实际上不会说明该模式。要真正理解它是如何工作的,您应该阅读类似 PoEAA 的内容。书 .. 或类似的东西。

What IS the most effective pattern to separate concerns in a web-application and make the code reusable?

见仁见智

关于php - 我很困惑,构建 MVC 或 MVVM 设计模式的真正方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18409659/

相关文章:

php - 使用 php 和 swift 创建托管 strip 帐户

wpf - 这段代码会破坏 MVVM 吗?

jquery - 为什么这个点击绑定(bind)没有被绑定(bind)?

c# - 在哪里可以找到 Linq ThenInclude 方法?

javascript - Backbone.js 及其 API 混淆

c# - 使用 Caliburn.Micro 进行布局组合/导航

php - 从表中选择日期范围内的行

php - 对 contentsFromUrl 的快速奇怪 react

php - 使用脚本转换表中的列值

definition - 我无法理解 MVC,它是什么,它不是什么?