2009-06-08 170 views
1

我在我的应用程序中实现了模型 - 视图 - 控制器模式。这不是一个Web应用程序,但MVC适合它。模型视图控制器

模型的所有更新现在都通过控制器进行路由。即使从视图更新也发送到控制器,它将被路由到模型。 (根据应用模式,我已经在模型和控制器之间声明了决策制定的类)。在大多数模式中,我看到了直接更新模型的观点。这在这种模式中是否有效?

回答

2

视图不应该直接访问模型,总是通过控制器访问,所以你认为这是正确的。

3

视图可以是模型的观察者。
模型可以通过观察者界面访问视图。当模型改变时,它可以通知视图或控制器。观察者模式将视图和控制器的模型分离开来。

Model-View-Controller

...

当一个 控制器操纵模型 完全采用被动模式。控制器修改模型 ,然后通知视图 模型已更改,并应刷新 (请参见图2)。在这种情况下,模型 完全是 独立于视图和 控制器,这意味着有 没有手段为模型报告 其状态的变化。
...

当 模型更改状态而不 控制器的参与活动模型被使用。这可以在 发生时,其他来源正在改变 的数据和更改必须 反映在意见。考虑一个 股票行情显示。您会收到外部来源的 股票数据,并且 想要更新股票数据更改时的视图(例如, 股票波段和警报窗口) 。由于 只有模型检测到内部状态发生变化时, 模型必须通知视图刷新 显示。
...

+0

非常感谢您的帮助。 在我的情况下,模型不是完全主动或被动的。当控制器更新模型(通过正在做决策的状态类)并且观察者被模型通知时,模型被更新。另外,模型在启动期间通过从配置xml文件中读取默认参数进行更新。在这种情况下,观众也不会被接受。除此之外,我所有的updatse都通过控制器进行控制。 – sarat 2009-06-12 12:45:00