我们正在使用DDD构建我们的应用程序。
我们正在编写我们的域层,在许多情况下,我们需要一个类型,例如Money,不属于我们域的一部分,它不仅仅是一个实体的类型,在该语言中不存在( PHP)。
我们不想浪费时间来创建和重新创建已经存在的库。
我几乎可以肯定,处理Money和我们使用哪个库的决定不应该对我们的域有影响,只是因为它是一个实现问题。
保持域名清晰但解决此问题的最佳方法是什么?
答案 0 :(得分:0)
回答你的问题:
int
,string
这样的课程。你可以把它放在一些infrastructure
层。因此,系统的每个部分都可以使用它。我们在项目中这样做。我们移动了一些"全部应用程序"不会改变的类和类型"在一个model.infrastructure
库中,这减少了图层之间的映射和转换。但请注意,这个答案就DDD问题的答案而言primarily opinion-based
,因为我不了解您的所有应用程序逻辑。
答案 1 :(得分:0)
是的,只要他们不直接执行I / O内容(文件系统/网络/数据库访问)并且不参考基础架构或I / O相关库。
是的,但为什么?
是的,这正是Value Objects的用途。电子商务域与邮件传递无关,但CustomerAddress
是一个完全有效的VO。
您可能会遇到的问题是,根据您的域名,Money可能位于“域”层中,但位于另一个专门处理付款的Bounded Context中。但事情并非总是如此。