java - 观察者模式与 MVC

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

<分区>

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

请帮我解决以下问题,谢谢 lotttttt。

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

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

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

最佳答案

  1. 您说得对,MVC 更像是一种架构风格,而不是一种设计模式 在这里进行很好的讨论:Is MVC a Design Pattern or Architectural pattern

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

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

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

好读: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

关于java - 观察者模式与 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15563005/

相关文章:

java - 代码重复与可读性

javascript - 组合/继承/工厂 - 此案例的最佳模式

java - 安全异常:权限被拒绝

c# - 在 Azure 部署上更新 View 的最简单方法

swing - Scala-Swing 中的 MVP

ruby-on-rails - 我应该将我的自定义方法从 Controller 移动到模型吗?

java - 如何处理运动流记录? (多处理器)

javascript - MSsql 数据库中的表级通知

java - JProgressBar 显示奇怪的橙色波浪

java - 我该怎么做才能将日期发送到光标?