我正在阅读Vaughn Vernon的《实现域驱动设计》一书。但是我很快就无法为自己的领域(足球比赛)建模聚合了。
我的情况是根据某些条件(过滤器)列出所有匹配项,例如:
我看到一个联赛(例如世界杯)将有很多阶段,例如小组赛或淘汰赛。
一个阶段会有很多回合,例如。 16轮四分之一决赛等
一个回合将有很多比赛。
但是,某些联赛没有舞台,例如。超级联赛。甚至 友谊赛国际联赛没有阶段性比赛和全面比赛。
第一个解决方案:
我们将有4个汇总:
对于没有舞台或回合的联赛,将为舞台和回合(例如)创建一个特殊的标识符。 NO_STAGE或NO_ROUND
第二个解决方案:
联盟将包含比赛。阶段或回合只是匹配的属性(值对象)
第三种解决方案:
创建所有类型的联赛:
答案 0 :(得分:1)
潜在的问题是,您正在尝试对数据而非行为进行建模。您正在创建一个关系模型(其中包含什么,一对一,一对多等),而不是对象模型。没有数据必须支持什么功能的上下文,对数据进行建模就毫无意义。
如果您只想建立数据模型,则DDD无关紧要,因为这不是数据建模技术。
我假设您想构建面向对象的软件。在这种情况下,通过确定想要从软件中获得什么功能并对其进行建模,来解决问题。
例如:安排比赛,准备/显示事件日历,模拟进度等。