如果您认为它们在应用程序中的使用方式不同,那么制作实体的子集是否有意义? IE浏览器。我接受我的实体并定义一个只包含第一个属性的新实体。现在我有2个实体重叠但使用方式不同但最终保留在相同的数据表中。这些实体将通过不同的存储库访问......
答案 0 :(得分:2)
我自己才开始了解DDD,所以如果我错了请评论并告诉我。这是我的想法:
如果要通过不同的存储库访问该实体,我认为它应该拥有自己的类。此外,现在重叠的位可能在将来不会重叠,如果您使用共享基类,您可能更有可能尝试在此时调整事物,这会弄脏您的域。
如果这两个类是独立子域的一部分,它们可能应该是分开的。我的想法是基于我记得在Rob Connery's interview on Hanselminutes中听到的一个例子。产品有几个对消费者很重要的属性(定价,描述等),以及对仓库人员很重要的几个属性(仓库中的位置,重量,尺寸等)。在那一集中对我的暗示是这两个产品应该在域中单独定义,而不是一次定义和共享。
答案 1 :(得分:1)
如果通过“在应用程序中使用”表示您将在不同视图中显示不同的部分,那么我建议您使用Fowler在其Presentation Model中描述的演示模式(或者如果您正在开发WPF)应用程序,您可以使用更多WPF专用版本Model-View-ViewModel (MVVM))。
但如果您使用“使用”意味着您将在不同的子域或域的一部分中使用该实体的不同属性,那么我同意Chris;将它们分成不同的实体可能会更好。原因是在您的域模型中,您应该反映该实体在该特定(子)域中的使用方式。如果您在不同情况下使用实体的不同部分,它们在这些设置中可能具有不同的含义,这些含义也应该反映在实体的命名中。如果是我,我可能会为每个实体创建一个存储库。就我所经历的情况而言,在大多数情况下,在实体和存储库之间进行1:1映射似乎是有意义的。但话又说回来;就像Chris,Rob Conery和90%的开发人员试图做DDD一样;我是DDD游戏的新手,所以我的经验可能会被更有经验的人推翻:)