MVP中的模型类只是POCO(贫血域模型、DTO或VM)?它们应该是包含业务逻辑的实体对象吗



在以下示例中,模型文件夹下的类只是POCO。(DTO还是VM?(

https://github.com/mrts/winforms-mvp

https://markheath.net/post/model-view-presenter-winforms

它们应该是包含业务逻辑的实体对象吗?业务/应用程序逻辑应该全部在演示者中吗?或者实体对象应该在MVP代码所依赖的一些核心模块中?

我认为最好记住,DDD不仅仅是实现部分的一组战术模式,而是从战略模式开始,如普遍语言有界上下文。另请参阅https://medium.com/@chatuev/ddd-for-microservices-4778a363c071

因此,DDD首先是探索你的问题领域,通过深入了解它,你可以更好地决定什么实现模式适合系统的不同部分。然后,这可以是简单的CRUD类实现,或者使用聚合、实体、存储库、值对象等遵循战术DDD模式

它们应该是包含业务逻辑的实体对象吗?业务/应用程序逻辑应该全部在演示者中吗?或者实体对象应该在MVP代码所依赖的一些核心模块中?

如果遵循域驱动设计中的战术模式,则Consumer模型类应包含业务逻辑。

因此,考虑到本示例项目中存在业务逻辑,Consumer将是一个所谓的贫血域模型,因为在本版本中,它只是一个没有逻辑的数据类。

如果根本没有复杂的业务逻辑,而是有大量的UI逻辑和类似CRUD的数据操作,那么遵循战术DDD原则可能会有些过头,额外的努力也不会有回报。因此,在这种情况下,不可能有贫血域模型,因为根本没有域模型,而是只有DTO和视图模型类,它们将完全符合需求。

最新更新