java - 在哪里实例化简单值/实体对象? DDD

标签 java design-patterns domain-driven-design design-principles

使用领域驱动设计,简单的值对象/实体在哪里实例化?

例如,如果我需要在服务类中创建一个简单的值对象,我是否只需在值对象的类上调用 new 运算符,将其耦合到服务类?

可以根据领域驱动设计在服务类中调用新的运算符吗?

这些值对象无法通过 DI 容器注入(inject),而且由于其简单性,它们不保证使用工厂。

最佳答案

直接从构造函数实例化它们有什么问题?

通常,只有当实例化过程很复杂或者您想要减轻客户端选择具体类的负担时,您才需要工厂。

但是,由于通用语言在 DDD 中至关重要,因此聚合具有工厂方法来创建与其相关的其他聚合是很常见的。

例如,而不是像下面这样凭空生成项目任务:

var task = new Task(projectId, ...);

你可以这样做:

var task = project.addTask(...);

这可以更好地表达“任务可以添加到项目中”用例,但代价是必须加载 Project 聚合。

关于java - 在哪里实例化简单值/实体对象? DDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33250586/

相关文章:

postgresql - DDD : modelling aggregate entities' unique global/local id in PostgreSQL

java - 什么是快速、等待通知或忙等待?

java - 如何在 Hazelcast 中实现自定义时钟进行单元测试?

Java ExecuteBatch() 只插入 1 行

asp.net-mvc - View 模型和数据传输对象有什么区别?

primary-key - 在我的域模型类中使用无意义的键是不是很糟糕?

java - Spring 中的异常处理程序

java - 这段代码是否违反开闭原则?

javascript - 对象包装与对象 "pollution"- 性能取决于对象大小或数量?

c# - 如何在 DDD 和存储库模式中对此建模