【问题标题】:DDD implementation - repository and factoryDDD 实现 - 存储库和工厂
【发布时间】:2019-04-23 00:30:54
【问题描述】:
我用 java 编写并尝试使用 DDD。
- 我有带有存储库接口的域模型,存储库具有在基础设施层 (IoC) 中实现的接口。
- 我希望只有聚合根类和接口具有公共包范围。实体、域服务、VO 应具有私有包范围。
应用架构(接口是控制器、GUI 等)
我的问题是:
- 如何在没有 getter 的情况下将数据从聚合根目录保存到数据库。我只想有干净的商业行为。也许我的聚合根应该创建 DTO 对象?(但有气味)
- 工厂应该在域包、应用程序中还是应该在域包中有接口?
【问题讨论】:
标签:
java
domain-driven-design
【解决方案1】:
如何在没有 getter 的情况下将数据从聚合根目录保存到数据库。我希望只有 >clean buissnes 行为。也许我的聚合根应该创建 DTO 对象?(但是是气味)
您可能正在寻找端口和适配器架构模式。
通常的方法 - 将业务和基础设施代码放在同一个包中,但放在不同的模块中
您甚至可以在没有公共 getter/setter 的情况下将您的 AR 设为非公开。
例子:
https://github.com/ddd-by-examples/factory
看看
代码中的领域模型示例:
总产品需求
实体 DailyDemand
在描述中 - ProductDemand 和 DailyDemand 不公开,放置在 io.dddbyexamples.factory.demand.forecasting 包的 demand-forecasting-model 模块中
现在查看模块 demand-forecasting-adapters 中的包 io.dddbyexamples.factory.demand.forecasting ,您将看到基础架构实现