在基于 MVVM 的应用程序中管理分层对象状态的最佳方法/方法是什么

本文关键字:方法 状态 对象 最佳 是什么 分层 管理 MVVM 应用程序 | 更新日期: 2023-09-27 18:35:40

我在GUI上工作并处理复杂的对象,即对象具有其他对象,而这些对象可能具有其他对象。

这些对象由各种视图、视图模型、服务、nhibernate 和你的名字来操作(通常几乎同时)——做一些简单的事情,比如保存/更新/删除/验证等。

在大多数情况下,像NotifyPropertyChanged这样的东西就足够了,但并非总是如此。有时我决定调用 EventAggregator,但是当对象图很大时,尤其是此类对象的集合 - 它变得如此混乱,我不断失去末端,不确定特定对象的确切状态是什么,并且通常不确定它是否仍然是相同的对象或它的一些松散副本;

所以我的问题是管理对象状态和避免"状态爆炸"的最佳方法/方法是什么?

在基于 MVVM 的应用程序中管理分层对象状态的最佳方法/方法是什么

通过引入其他结构来简化。最好的方法是为应用程序提供更多的结构。将应用程序分成较小的部分,您可以很好地监督和控制内部生活。让这些部件隐藏在外观/适配器类型后面,这些类型仅公开系统该部分的简化视图。根据需要递归重复。使用正式模型来定义结构和相互通信规则,例如UML 2.0分层状态机通常非常适合...我知道,这只是一个通用的工程废话,但它可能会有所帮助......

我建议你注意一本书 敏捷原则,模式,C#中的实践 Robert C. MartinMicah Martin,有很多很好的例子展示了如何通过UML和其他类似的方法设计系统。具体来说,它显示了为什么要重构代码,可以存储在抽象类中,哪些不能。您可以立即看到咖啡机Mark IV的示例,他在其中开发了一个真正独立的界面。

根据我的感觉,MVVM 的主要原则 - 是数据与其表示的独立性。我喜欢尝试制作单独的模块,这些模块实现单独的逻辑,而不了解数据。比如SQL模块、SMTP模块等,它们只是包含一些方法,比如ConnectToDb()或者SendEmail(),主要逻辑就是ViewModel,她把这些工作模块和数据模型结合起来。

在设计系统之前绘制图表很有用,但也不要参与。最主要的是看到论文中的主要部分,其他人会像(或架构师)一样理解它。