gpt4 book ai didi

wpf - 为什么要避免在MVVM中发生事件?

转载 作者:行者123 更新时间:2023-12-03 10:23:30 25 4
gpt4 key购买 nike

我有一个类似于THIS的问题

在开发WPF应用程序时,为什么以及在什么情况下应避免发生事件(最好使用命令)?我想要一个实用的示例,其中事件方式变得很难遵循/维护(这是我的主要兴趣)。

最佳答案

事件在发布者和订阅者之间实现了紧密的耦合,格式僵化且难以扩展。最可恶的是,发布者不知道其订阅者是谁,因此即使所有订阅者都离开了,发布者也将继续发布。这会导致内存泄漏。

此外,如果ViewModel中具有处理程序来监听源自用户表面的事件,则必须以某种方式人为地创建这些事件以在ViewModel上运行受控测试。根据您的问题,这可能很难做到。

另一方面,仅当ViewModel处于可预测状态并向CanExecute查询返回true时,才执行命令。当CanExecute查询返回true时,可以执行该命令,并且可以准确而全面地观察到其突变。

实际上,当开发人员启动应用程序并查找给定条件时,将对其中包含大量处理程序的ViewModel进行测试。每个人都在家睡着的早晨,可以在凌晨2点测试使用命令模式的ViewModel。

您的示例...用户故事:当我双击列表框中的一个项目,然后在5秒钟内单击“确定”时,应生成针对数据库的查询。但是只有在星期二并且只有在曼谷下雨的时候。

事件模型:难以编程,无法进行全面测试(除非在星期二:)),无法扩展,经过反复的错误,用户对您的工作信心不足。

命令模型:易于编程,易于测试,每次更改要求后可证明100%的测试覆盖率。

关于wpf - 为什么要避免在MVVM中发生事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17577116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com