【问题标题】:observer pattern vs MVC [closed]观察者模式与 MVC [关闭]
【发布时间】:2013-03-11 21:02:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • MVC 包含观察者

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


【解决方案1】:

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

要么放大,要么缩小。

【讨论】:

    【解决方案2】:
    1. 你说得对,MVC 更像是一种架构风格,而不是一种设计模式 在这里很好的讨论:Is MVC a Design Pattern or Architectural pattern

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

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

    希望这会有所帮助!

    【讨论】:

    • 我在这里看到了一个循环。视图向控制器发送信号,控制器向模型发送信号,模型向视图发送信号??
    • 是的。信号在视图处开始和停止。例如,如果您单击一个按钮以使文本变为斜体,则视图会告诉控制器,控制器决定“斜体”的含义(逻辑,例如实际选择的任何文本),然后更新文本模型(将该文本块设置为“斜体” =TRUE"),它告诉视图显示字体的斜体版本。不过,通常你不想要无限循环。
    • 但是如果更新来自模型,“视图选择”箭头会做什么?
    猜你喜欢
    • 2010-09-23
    • 2011-07-31
    • 2010-12-31
    • 2014-10-14
    • 2012-09-02
    • 2015-02-12
    • 2014-05-15
    • 2016-02-20
    • 2023-04-10
    相关资源
    最近更新 更多