Events DDD事件和抽象基类

Events DDD事件和抽象基类,events,domain-driven-design,abstract-class,base-class,Events,Domain Driven Design,Abstract Class,Base Class,我目前正致力于实现多个共享公共属性且基本相同的事件:模板。我们的事件提供程序应用多个事件,如someTemplateAddEvent和someOtherTemplateAddEvent。以后可能会有更多的变化,所以我考虑为每个TemplateAddEvent实现一个基类,因为它们都有共同的属性。但我怀疑这是否正确,因为有些人更喜欢事件是包含每个属性的简单类,而不是深入挖掘事件可以提供什么 我希望有人能对这个问题有所了解。继承通常用于两个正交的原因——重用功能和声明类之间的“is-a”关系。看来你

我目前正致力于实现多个共享公共属性且基本相同的事件:模板。我们的事件提供程序应用多个事件,如someTemplateAddEvent和someOtherTemplateAddEvent。以后可能会有更多的变化,所以我考虑为每个TemplateAddEvent实现一个基类,因为它们都有共同的属性。但我怀疑这是否正确,因为有些人更喜欢事件是包含每个属性的简单类,而不是深入挖掘事件可以提供什么


我希望有人能对这个问题有所了解。

继承通常用于两个正交的原因——重用功能和声明类之间的“is-a”关系。看来你使用它的第一个原因。这是一个较弱的理由,因为通过组合也可以实现重用。接下来要问的问题是,事件之间是否存在“是-是”关系。有时,事件之间的继承是可取的,例如为从基类派生的所有事件提供一个处理程序是有意义的


总的来说,如果继承只应用于实现代码重用,我会警告不要使用它。如果这是一个关于该领域的恰当陈述,那么它就有意义。

感谢您的见解。你是对的,原因是为了重用。但我想知道,在建模事件时,合成是否可行。只有在主事件类中定义子类以防止不同事件之间的类共享时,我才能看到合成工作。在多个事件之间共享公共类是不必要的,因为您希望事件是独立的。您同意吗?共享基类不受欢迎有几个原因:使事件契约不那么清晰,对基类的更改影响所有子类,可能存在序列化问题等。如果所有这些都是预期的,则可以谨慎使用基类。根据经验,过于雄心勃勃的重用可能会成为一种挑战。