在以下示例中,模型文件夹下的类只是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和视图模型类,它们将完全符合需求。