观察者模式与MVC

时间:2013-03-22 04:56:30

标签: java model-view-controller design-patterns observer-pattern

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

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

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

  2. 观察者模式和MVC之间有什么关系? 我听说过两种不同的版本。

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

2 个答案:

答案 0 :(得分:14)

  1. 你说MVC更像是一种架构风格而不是一种设计模式 这里讨论得很好:Is MVC a Design Pattern or Architectural pattern
  2. 我希望这也能回答你的另外两个问题。

    观察者设计模式是一种行为模式,当我们想要在对象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.
    

    希望这有帮助!

    enter image description here

答案 1 :(得分:2)

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

可以放大或缩小。