Ria*_*ana 6 dns wpf domain-driven-design model mvvm
我正在使用MVVM为UI实现基于WPF的应用程序.
我有一个ViewModel,它包装了每个可编辑的可编辑模型.VM包含处理错误通知的所有逻辑,"脏"管理等等.
这种设计支持用于简单域模型对象的CRUD schenarios,这些对象是贫血的,即不包含任何逻辑.
现在,我面临一个更棘手的问题,因为我有一个包含逻辑的域模型,逻辑可以改变域模型的内部状态.
有人已经面对这种情况吗?如果是这样,你有什么建议来正确处理这个问题吗?
Riana
以下是我通常如何处理它:
ViewModel层由属于该层的类型组成,这意味着我不会直接在ViewModel中使用我的业务对象.我将业务对象映射到ViewModel对象,这些对象可能是也可能不是完全相同的形状减去行为.可以认为这违反了"不要重复自己",但这样做可以让您遵守单一责任原则.在我看来,SRP通常应该胜过DRY.ViewModel用于为视图提供服务,并且该模型用于提供业务规则/行为.
我创建了一个Facade/service层,它接受并返回ViewModels作为参数,但是将ViewModels映射到相应的业务对象版本.这样,非贫血对象不会在ViewModel上施加非视图逻辑
依赖关系如下所示:
ViewModel < - > Facade/ServiceLayer - > Business Objects
我想如果你想释放MVVM的全部潜力,请记住这一点很重要:ViewModel是视图的模型/抽象,而不是呈现给视图的模型.
归档时间: |
|
查看次数: |
2055 次 |
最近记录: |