dem*_*xSH 2 silverlight model-view-controller mvvm
我是MVVM的新手,现在在Silverlight项目上做一些MVVM重构工作,假设它是一本书购物应用程序.
View是一个书籍列表,我将书籍的标题绑定到ViewModel.所以我public string Title { get; set; }在ViewModel中也有一个public string Title { get; set; }模型(我是对的吗?)
现在我想放一个事件处理程序来更新书名,我应该把事件处理程序放在ViewModel或Model中吗?什么是模型用于?
在我看来"两者都不..."将控制器类添加到MVVM的混合中.
将控制器代码放在视图模型中的问题在于使它们难以独立测试.在许多方面,我认为这与代码背后一样糟糕.
在我看来,每个人都认为MVVM没有控制器,因为他们忽略了C. MVVM实际上是MVC的变种"只是添加了ViewModels".
也许它应该被称为MVCVM而不是?
ViewModels仅用于从视图中卸载"GUI"代码并包含任何用于绑定的数据.ViewModels不应该进行任何处理.一个很好的测试是,您的ViewModel可以通过自动化单元测试进行测试,并且不依赖于数据源等.他们应该不知道数据实际来自哪里(或者谁在显示它).
虽然可以忽略/避免,但Controller应负责决定显示哪些数据模型以及在哪些视图中显示.ViewModel是Models(MVVM中的M)和Views之间的桥梁.这允许更简单的"分离"XAML创作.
我们在所有最近项目中成功使用的模式是仅在模块中注册控制器,并在启动时初始化它们.控制器非常轻薄,是唯一需要在应用程序监听或发送消息的过程中闲逛的东西.在他们的初始化方法中,他们然后注册他们需要拥有的任何东西(视图和视图模型等).这种轻量级逻辑内存模式也可以实现更轻薄的应用程序(例如,WP7更好).
我们遵循的基本规则是:
最后两点是你永远不应该打破的,或者关注点的分离会消失.
| 归档时间: |
|
| 查看次数: |
1897 次 |
| 最近记录: |