lcf*_*lcf 7 model-view-controller
我经常使用非常流行的"服务器端"mvc框架,如ASP.NET MVC或Zend Framework for php,Spring for Java等.
其中一些也可用于桌面应用程序开发,但我从未尝试过.
我完全理解设计模式不应该限制实现,它们通常应该提供可以不同实现的想法和通用规则.
现在我正在使用其中一个用于常规桌面应用程序开发的mvc框架(它没有很多教程或一个不错的快速入门),我对mvc范例有一些疑问.这是其中之一:
链接不同视图/控制器的常用方法有哪些?如果我单击一个按钮,该按钮的特殊控制器将调度生成的事件,对模型执行某些操作,更改视图状态.但是如果我需要与另一个视图进行交互呢?就像,当我点击一个按钮时,它会改变一个模型,但我还需要打开另一个窗口或改变另一个窗口的状态(隐藏另一个窗口上的按钮,比方说......),而不改变模型.有什么常见方法可以解决这个问题?我的第一个控制器是否应为第二个控制器(或第二个视图)生成事件?或者第二个控制器是否应该从第一个视图处理事件?
任何语言/框架的一些链接或示例都会非常有用,谢谢!
对象之间松散耦合通信的常见模式是中介者模式:
这允许对象之间通过中介器进行通信,例如,一个对象向中介器发布消息,并且零个或多个对象可以订阅/接收该消息。pub\sub是通过中介者进行的,而不是直接进行,所以没有直接耦合。
此模式的一个示例是 CAL(又名 Prism)中的“事件聚合器服务”,它是 WPF 应用程序的复合应用程序框架,通常与类似 MVC 的模式 - MVVM 一起使用:
http://msdn.microsoft.com/en-us/library/ff648465.aspx
http://msdn.microsoft.com/en-us/library/ff647600.aspx
在 MVVM 中,事件聚合器服务(中介器)通常用于允许视图模块之间松散耦合的通信(有点像 MVC 中的控制器)。通过这种方式,视图模型可以发布和订阅有趣的一般消息。
归档时间: |
|
查看次数: |
837 次 |
最近记录: |