MVC,MVP,MVVM?

我们刚刚开始与Sinatra合作,后者使用MVC(模型-视图-控制器)模式来实现用户界面。 它分为三个主要部分:

模型 :更改或保存数据的应用程序的逻辑。

视图 :正面部分,用户可以在其中输入数据或单击按钮以从应用程序获取信息。

控制器 :模型和视图之间的过渡。 它把用户的请求带到模型,并将结果提供给用户。

这些组件的分离允许高效的代码重用和并行开发,从而使开发人员更容易管理该应用程序。

那么我想知道MVC和其他设计模式之间有什么区别?

我的第一次搜索将我带到了这个博客,该博客似乎非常有帮助且直接:

我想对此进行分解,并在可能的情况下更清楚地进行解释,所以我去了Wikipedia,对该问题有了更多的了解。

他们每个人都有自己的定义,在某些方面看起来相似,而在其他方面则略有不同。 图形表示并没有太大帮助。 我注意到MVP看起来与我们从MVC中学到的几乎完全相同,在MVC中,控制器充当模型和视图之间的过渡,演示者执行相同的功能。

好。 堆栈溢出应该可以解决此问题……

这个线程中有很多图表和讨论。 每个用户似乎都对另一个定义提出了警告。 另外,这不是该主题上Stack Overflow中的唯一线程。

据我所知,除了MVP之外,MVC和MVP似乎很相似,每个视图(通常)都有自己的演示者,就像MVC一样,控制器可以在多个视图和模型之间进行调解。 与MVVM(Knockout.js)进行了一些合作之后,似乎视图模型取代了控制器/表示者,并充当表示应用程序中数据状态的绑定器。 视图模型立即在视图中更新数据,而无需页面更改或刷新。 在所有这些模式中,一个共同的线程是视图和模型永远不应直接相互通信。

我的收获是,您正在使用哪种建筑模式,学习并遵循其构架,而不会为其他人的工作方式所淹没。 您可以弄清楚时间到了。