11

我想知道观察者模式和 MVC 之间有什么区别。我在学校有一些用 Java 编写 MVC 程序的经验,但没有观察者模式的经验。(有人告诉我观察者模式意味着我在 Java 中使用了 Observer 类......我认为这不是一个好的答案。)

请帮我解决以下问题,非常感谢lottttt。

  1. 它们之间有什么区别?观察者模式不为控制器使用单独的类?

  2. 观察者模式和MVC有什么关系?我听到了两个不同的版本。

    • 第一个版本是,MVC 是一种架构,而观察者模式是一种设计模式。它们看起来很相似,因为 MVC 使用观察者模式。
    • 第二个版本是,观察者模式和 MVC 是两种不同的设计模式。
  3. 是否可以只使用其中之一?如果是这样,在什么情况下,您会使用其中一种,为什么?

4

2 回答 2

18
  1. 您说得对,MVC 更像是一种架构风格而不是一种设计模式,这里很好地讨论:MVC 是一种设计模式还是架构模式

我希望这也能回答你的另外两个问题。

观察者设计模式是一种行为模式,当我们想要在对象 x 发生变化时通知对象(比如 x)的所有依赖项时使用它。好读: http: //www.dofactory.com/Patterns/PatternObserver.aspx

并且它们都密切相关,正如您从 MVC 图中看到的 MVC - 例如:“视图”的更改必须通知“模型”和“控制器”实现此类功能的一种有效方法是观察者设计模式。

好读:http ://en.wikipedia.org/wiki/Observer_pattern

In fact the observer pattern was first implemented in Smalltalk's MVC based user 
interface framework.

希望这可以帮助!

在此处输入图像描述

于 2013-03-22T05:17:04.613 回答
4

有很多与您提出的问题相关的文章。MVC 对我来说是一种架构模式,它也“包含”观察者模式。我相信如果一个人真的在不同的实际项目实现中研究 MVC 模式,那么其中的设计模式不止一种。

要么放大,要么缩小。

于 2013-03-22T05:07:28.887 回答