严格分离视图和模型的好处

本文关键字:模型 分离 视图 | 更新日期: 2023-09-27 18:15:33

我的一个同事不想从视图直接绑定到模型。例如,在模型中,他有一个ObservableCollection,在视图中他想使用它。而不是像我那样直接使用它(例如{Binding Model.Collection},他在ViewModel中有另一个ObservableCollection,它具有与模型中的ObservableCollection完全相同的数据。他正在通过事件同步两个observablecollection。

他的方法有什么好处?我个人不赞成他的方法,因为它只会增加重复的代码,而且由于你必须自己同步ObservableCollections,这也更容易出错。我的同事说他想这样做,因为这样他就可以在不改变视图的情况下改变模型。

编辑:

一些高度支持的答案[1][2][3]支持我的想法,即直接绑定到模型是可以的。

严格分离视图和模型的好处

这一切都归结为代码分离和可重用性。理想情况下,视图应该与模型完全分离。如果视图不依赖于模型的特定实现,那么它可以与不同的模型一起重用,以表示其他一些数据。

所以,假设你有一个AlbumView,你当前的模型是Album,但在未来你决定也添加MovieBook到你的库。您仍然可以使用相同的AlbumView来显示电影和书籍对象。此外,如果您想创建一个与专辑有关的新项目,您可以简单地重用Album类,因为它不依赖于任何视图。这就是MVVM或MVC的优点。

所以对我来说,我会说,你的同事是对的,因为模型自然地反映了数据访问层实体,它将被存储和处理。除此之外,Model可能有更多与Access数据层相关的属性,如created indexing。而您的ViewModel仅与应用程序的视图和表示逻辑相关。它只反映了用户将要看到的内容。

我会说在Model层中使用ObservableCollection是错误的。通过添加,你基本上说"Model对象存储数据,并通知当它发生变化"。

ViewModel的作用是操纵Model,并为View提供显示Model的接口。

我相信你的同事是对的,因为他正在实施关注点分离,这样操纵Model不应该影响View