gpt4 book ai didi

wpf - 在Wpf MVVM中使用非贫血症域模型

转载 作者:行者123 更新时间:2023-12-04 13:43:51 24 4
gpt4 key购买 nike

我正在使用针对UI的MVVM实现基于WPF的应用程序。

我有一个ViewModel,它包装了每个可以编辑的可编辑模型。 VM包含用于处理错误通知,“脏”管理等的所有逻辑。

此设计为 anemic (即不包含任何逻辑)的简单域模型对象提供了很好的CRUD方案。

现在,我面临一个更加棘手的问题,因为我有一个包含逻辑的域模型,并且该逻辑可以更改域模型的内部状态。

有人已经面对过这种情况吗?如果是这样,您是否有一些建议可以正确处理此问题?

里安娜(Riana)

最佳答案

这是我通常的处理方式:

  • ViewModel层由属于该层的类型组成,这意味着我永远不会在ViewModel内直接使用我的业务对象。我将我的业务对象映射到ViewModel对象,这些对象可能或可能不是完全相同的形状减去行为。可以说这违反了“不要重复自己”,但是这样做可以使您遵守“单一责任原则”。我认为,SRP通常应胜过DRY。存在ViewModel以服务于 View ,并且存在模型以服务于业务规则/行为。
  • 我创建一个外观/服务层,该层将ViewModels作为参数并返回,但是将ViewModels与其对应的业务对象版本相互映射。这样,非贫乏对象就不会在ViewModel
  • 上施加非 View 逻辑

    依赖关系如下所示:
    ViewModel <-> Facade/ServiceLayer->业务对象

    我认为,要释放MVVM的全部潜力,请记住这一点,这一点很重要: ViewModel是 View 的模型/抽象,而不是呈现给 View 的模型。

    关于wpf - 在Wpf MVVM中使用非贫血症域模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5466398/

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