假设我们有Foo作为一个AggregateRoot。并且有一些通用的Foo s以及EnhancedFoo s带有许多扩展属性。是否可以在单个聚合根类上公开“操作”以获得通用属性和增强属性,并通过验证检查来引发异常,如果在非增强对象上调用增强动作Foo对象?从技术上讲,在这种情况下,AggregateRoot将为所有支持的Foo类型聚合所有可能的“操作”?AggregateRoots如何聚合不同的对象类型?
显然很大程度上取决于领域结构,但我认为这种假设的情况是相当普遍的。可能是基本的问题,但我只是开始与聚合/根。每一次反馈
更新
比方说,我们有富作为AggregateRoot。而且有通用富 S以及FlyableFoo S,SwimmableFoo S,等等。所以,总要“知道”所有可能的行为(飞,嘎嘎,游泳),并适当地将其暴露在服务功能。如果有什么被称为某些不被当前对象“支持”的原因,Aggregate可能会抛出一个异常“对不起,企鹅不能飞”。
从我的问题不清楚,但我实际上使用组合。反过来说,“属性”我应该说“行为”。我添加了更新到我的问题,请检查。另外,感谢您提及“构成超越继承”图,这非常有帮助! – Tenek
@Tenek看到我更新的答案 –