DDD /存储库

时间:2009-03-25 17:12:14

标签: domain-driven-design repository

我对DDD很新。我的SQL表包含样式列表,每种样式都有颜色和大小。现在,我正在开发一个应用程序,用户将看到三个下拉列表,一个用于样式,一个用于颜色,一个用于大小。现在,最初这些下拉列表中加载了不同的值。然后,用户可以选择样式,然后系统将能够找到所选样式的所有颜色/大小。用户可以对颜色执行相同操作,并且将加载与所选颜色和尺寸匹配的样式。你明白了。

这些是我的基本要求。现在我正在考虑为样式(StyleRepository)创建一个存储库,并让它加载所有样式,并在需要时加载子颜色和子颜色。

然而,正如我的应用程序中所述,我还需要加载不同的颜色或大小。现在是建议创建三个存储库而不是StyleRepository,ColorRepository,SizeRepository还是我会创建一个完全不同的存储库?

如上所述,我对此很新,并感谢您的建议。

谢谢

2 个答案:

答案 0 :(得分:3)

样式似乎是您的根聚合对象。这就是你构建存储库的原因。

由于每个样式都有该样式允许的颜色和大小的特定子集,因此每个样式应包含颜色和样式列表。

public class Style
{
   public IList<Color> Colors { get; set;}
   public IList<Size> Sizes { get; set;}
}

然后,您的存储库将具有FindAll()方法以返回所有样式。每个Style都有自己的Colors和Sizes列表,因此无需再次访问Repository来获取它们。当用户从下拉列表中选择一个特定的样式(希望你绑定了Style对象)时,你可以从所选对象中获取颜色和大小的列表,并填充其他下拉列表。

当用户选择特定的样式,颜色和大小时,我会假设它被保存在一个单独的类中,如SelectedStyle类,它只包含一个Color和Size属性。

public class SelectedStyle
{
   public Color Color { get; set;}
   public Size Size { get; set;}
}

答案 1 :(得分:0)

因为你的案例中的颜色是样式使用的实际颜色,而不仅仅是抽象颜色列表(比如绘画应用程序),我会使用StyleRepository和addeed方法,如GetAllUsedColors()。