首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >领域模型设计

领域模型设计
EN

Stack Overflow用户
提问于 2009-09-16 04:05:24
回答 4查看 2.1K关注 0票数 2

您将如何为这个简单的示例创建域模型?一个食谱可以有很多成分,一个成分可以在许多食谱中使用。每个菜谱中使用的每种成分的多少也会被储存。我设计了以下三个数据库表来存储这些数据和关系。

我现在正试图创建一个域模型来表示这一点。我有两个类的基本示例。当我想要创造一种新的配料时,我遇到了这个模型的麻烦。需要有一个具有quantity属性的类。应该如何建模呢?

数据库表

alt文本http://img190.imageshack.us/img190/340/databasex.png

域模型

alt文本http://img24.imageshack.us/img24/8859/classesy.png

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-17 14:55:54

如果您正在尝试进行域驱动设计,请不要从表开始。首先,阐述一个反映您的基础领域的概念模型。我同意ndp:从DDD的角度来看,RecipeIngredient是一个有点尴尬的名称/概念。

我认为该模型需要以下概念:配方、成分、度量和RecipePreparation。

食谱是成分的聚合。属于食谱的每一种成分都需要一种与其相关联的度量,作为制剂的规范。此外,您还需要对RecipePreparation进行建模,以关联在特定配方准备过程中使用的每种配料的实际数量。

一种计量由单位和数量组成(例如2杯,0.5盎司,250克,2汤匙.)。

我在这里看到了两种可以在分析过程中混合在一起并且应该分开的东西:食谱/配料/度量作为一种规格来烹饪一些东西(每个菜谱有一个例子)和Recipe制备/配料/度量作为一个食谱的具体准备,由一个特定的人在特定的时刻完成,并且可能使用不同的度量方法(将所有的配料加倍,因为食谱规格是为两个盘子而你有四个客人.类似的事情)。

你可以做得更深入一些,比如一些成分有一套可交换的成分(例如,如果你没有山羊奶酪,使用马苏里拉),一本食谱,收集一组相同类别的食谱,食谱的烹饪时间等等。

票数 3
EN

Stack Overflow用户

发布于 2009-09-16 04:24:30

在域模型中,创建一个RecipeIngredient类,其中包含对特定成分和数量的引用。

然后将Recipe.Ingredients列表更改为包含RecipeIngredient对象。最后,从配料类中去掉数量。

一个小提示:大多数纯粹的领域建模师会说,您应该先创建域模型,直到很久以后才开始关注数据库。

票数 2
EN

Stack Overflow用户

发布于 2009-09-16 04:45:41

由于连接表(quantity)中有数据,所以答案是需要一个类来表示它。(还有其他选择,但不值得考虑。)

随着模型的增长,您无疑需要在这里添加更多的数据。例如,您如何在食谱中设定配料的顺序?

从领域驱动的设计角度来看,RecipeIngredient是一个有点尴尬的名称(和概念)。你可能会想出不同的名字让你感觉更好。但总的来说,这是一个必要的实现细节。对不起,我手头没有Evan的DDD书可以提供参考资料。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1430880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档