【发布时间】:2017-02-14 15:58:07
【问题描述】:
所以猜猜我有这种领域事件:
class BookChangedName...
class BookType1ChangedName extends BookChangedName...
class BookType2ChangedName extends BookChangedName...
这样更好还是:
class BookChangedName{
enum bookType = BOOK_TYPE_1;
}
因为他们说只有在类之间存在不同的行为时才使用继承,所以我假设在这里我会使用枚举示例(案例 #2)——因为域事件只是简单的 DTO。
但同样,在我的领域中,这种不同类型的事件具有不同的含义(不同的处理路径)。因此,如果我使用示例 #1,我最终会得到很多:
if(event instanceof BookType1ChangedName){
//do smth in domain
}
else if(event instanceof BookType2ChangedName){
//do smth in domain
}
而且我也不能这么明确:
when(BookType1ChangedName event){...
我必须做一些预处理,比如:
@EventHandler(matcher_pattern = event->event.bookType==BOOK_TYPE_1)
when(BookChangedNameevent){...
【问题讨论】:
-
如果您的 booktypes 是不同的聚合,如果您使用继承可能是单亲,您可以使用相同的事件并在基类中有处理程序。
标签: event-handling domain-driven-design event-sourcing domain-events