我最近阅读了很多关于 DDD 的文章。我有一些基本知识(并在实践中使用过),但现在我决定(几乎)100% DDD。当然,我马上就遇到了问题。
我为每个模块(功能)设置了 3 层:应用程序、域和基础设施。我使用六边形架构模式,这基本上意味着我在域类中获得了我的核心逻辑,应用层使用它(但域层根本不知道应用层),基础设施从域(数据库存储库)和一些接口实现我的端口从应用层等
现在,当我在应用程序服务中处理一些用例时,我必须使用我的根聚合并执行一些逻辑,最后将它映射到一些用于 UI 的 DTO。问题是要执行这样的映射,我必须为我的大多数属性提供 getter/setter,这会杀死我。我想通过提供大量业务方法和很少的 getter/setter 来避免贫血模型。
我可以看到 2 个解决方案:
在我的域层中引入 DTO,这又是 DDD,并且在我的实体中有 toDTO() 方法
提供 getter/setter 并仅在映射器中使用它
任何其他解决方案,你们如何处理应用程序中的此类常见问题?我知道在现实中很难做到纯粹的 DDD,不遵循所有规则也可以,但我注意到尽可能少的 getter/setter 对我的设计有很大帮助,但同时很明显 DTO 不属于域。
SMILET
慕少森
隔江千里
相关分类