gpt4 book ai didi

java - 需要存储另一个领域模型的领域模型

转载 作者:行者123 更新时间:2023-12-02 05:54:04 25 4
gpt4 key购买 nike

假设我有以下简单的域模型设置:

class Event { ... }

class PlannedEvent { Event event; DateTime date; .. }

我想尽可能描述性地计划 Activity ,我会把它写成

class Event {   

public void plan(DateTime date) {
// Can I create and Store a PlannedEvent here ?
// in other words access a Repository
}

我添加了计划方法,因为在通用语言中,您计划一个事件,这会导致 future 某个地方发生计划事件。所以将 plan 方法放在 Event 类中感觉很自然。

我一直读到,你不能在域对象中使用存储库,我可以理解为什么,但是我该如何解决上述问题呢?

这就是领域事件发挥作用的地方吗?

class Event {   

public void plan(DateTime date) {
DomainEventPublisher
.instance()
.publish(new PlannedEventCreated(this, date)));
}

领域事件将在哪里确保创建并存储 PlannedEvent(通过存储库)?

最佳答案

是否可以认为Event和PlannedEvent都是聚合根?我怀疑 Event 应该知道有关 PlannedEvent 的任何信息,当然不知道如何构造一个事件 - 这超出了它的范围。埃文斯谈到工厂时说道:

When creation of an object, or an entire AGGREGATE becomes complicated or reveals too much of the internal structure, FACTORIES provide encapsulation.

也许您使用聚合工厂来为事件构建 PlannedEvent。为了将两者解耦,我更愿意通过 PlannedEvent 中的某个唯一事件 ID 来引用事件,而不是直接对象引用。您可以使用此 ID 通过其存储库查找事件。

关于java - 需要存储另一个领域模型的领域模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23265835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com