在DDD架构中放置辅助类的位置?

时间:2017-06-12 15:19:57

标签: architecture domain-driven-design

我已经阅读了similar question中的答案,但我相信我的需求是不同的。

我的“域”图层中有一个 - main - proj - __init__.py - setting.py - celery.py - manage.py 类,其中一个方法A需要从文件中读取以获取特定值,因此我考虑创建一个帮助类来执行文件读取并使getValue保持尽可能干净和最小。

由于我是第一次使用DDD,并且基于我所拥有的简陋知识,我认为辅助类可以放在域层中,因为它将被用于它。

将域层中的帮助类放在明智的选择中吗?如果不, 有没有更好的DDD兼容解决方案?

2 个答案:

答案 0 :(得分:5)

从文件中读取数据应该在Infrastructure层中,以及使用数据库,外部服务,与低级API的通信等。这是技术代码,而不是域逻辑。应该在那里。

在DDD中,您可以使用服务来放置一些帮助代码,如果它当然是域逻辑而不是工厂。您还可以使用Repository对象在Domain Layer中创建接口,在Infrastructure层中创建实现。

因此,您可以在Domain层中创建IMyDataRepository接口,在Infrastructure层中创建MyDataRepository类,解决Application层中的依赖关系。

答案 1 :(得分:4)

我不建议触摸Domain / Aggregates中的文件系统,因为它们应该是纯粹的。但是,如果您使用的是CQRS +事件源,则可以在读取端执行IO,但要注意重放,因为应用程序状态必须随时可重建。

如果您没有使用CQRS,而是使用某种分层架构,并且必须执行IO,那么您应该将依赖关系转换为基础架构(IO完成的位置)。为此,您可以在Domain层中定义接口,在Infrastructure层中定义实现。

相关问题