2

因此,通常在使用 MVC 时,您有一个控制器来控制输入,一个模型处理它并使其为用户做好准备,以及一个向用户显示“结果”的视图。

现在,在创建此模式时,您将代码分离到它们的相关位置。例如控制器代码进入控制器,gui代码进入视图等等。

现在我的问题是,如果我们查看所有的设计模式,例如观察者模式。您如何将这种模式应用于已经实现 MVC 模式的代码结构?对于这种情况,还有许多其他模式,例如复合模式、工厂模式和命令模式?

MVC 模式的结构不会让其他好的实践设计模式更难实现吗?

4

5 回答 5

3

MVC 不是设计模式,而是架构模式。

维基百科

架构模式是软件架构领域的标准设计。架构模式的概念比设计模式的概念范围更广。架构模式解决了软件工程中的各种问题,例如计算机硬件性能限制、高可用性和最小化业务风险。一些架构模式已经在软件框架中实现。

因此,将 MVC 与设计模式进行比较是不公平的。设计模式可以在每个逻辑模块(模型、视图和控制器)上实现

于 2013-08-05T11:27:41.400 回答
0

您的视图中可以有其他模式。例如,您可以使用中介者模式在 javascript 中的模块或视图之间进行通信。您也可以使用观察者模式。

这是 Nicholas Zakas 关于如何使用沙盒模式的演示视频。它与中介者模式非常相似,但它更复杂一些,它允许您创建更松耦合的模块。http://www.youtube.com/watch?v=7BGvy-S-Iag

这可以在 javascript 中实现,同时仍然使用 mvc 模式。例如,您可以将它与 Rails 一起使用,这自然会按照惯例强制执行 mvc。

编辑:从技术上讲,Rails 不是 MVC,但你明白了。更多相关信息:Ruby on Rails 中的 MVC 是什么?

于 2013-08-05T11:30:27.073 回答
0

不,它并没有否定其他面向对象和函数式编程模式。

MVC 是一种架构设计模式,当纯 OOP 实践不足以使代码保持可管理性时,您可以在现有代码库之上使用它。

MVC 模式引入了额外的约束,允许您组织代码和代码部分之间的信息流。

于 2013-08-06T15:24:19.520 回答
0

MVC 是一种架构模式。像所有架构模式一样,它由几种设计模式组成。视图和模型之间的关系是观察者模式。控制器是视图的可互换策略。并且视图正在使用复合模式。

这些只是 MVC 的核心模式。该模型通常是一个调解器,例如,视图可能包含装饰器。视图可以使用工厂方法创建控制器。

于 2013-08-05T12:35:19.087 回答
0

在 MVC 下,观察者模式可用于协调模型不同元素之间的通信。

例如,假设一个核心模型组件生成数据并需要通知其他模型组件。您可以通过将其他模型注册为核心模型上的侦听器来促进这种通信。

此行为独立于视图和控制器层中发生的任何事情。

于 2013-08-06T07:17:55.920 回答