2012-03-25 71 views
2

我们有一个Web应用程序,您可以在其中访问两个服务/功能(“购买”和“租用”)。在第一步中,您必须从DropDownList中选择一个ProductCategory。并非每个产品类别都可以购买或租用。我们有5个产品类别:作为聚合根的域驱动设计查找表

  • 答:买/租
  • B:购买/租赁
  • C:购买/租赁
  • d:只买
  • E:只能租

我该如何设计一个领域驱动的方式?在我oppinion买/租财产不是产品分类的属性,但服务本身的:

public class Service 
{ 
    public string Name; // Buy or Rent 
    public List<ProductType> AllowedTypes; 
} 

编辑第二个例子:

两项服务有一些共享的状态(如创建或成品),但也是特殊状态(例如“购买状态-1”)。为两个服务使用相同的状态类是否是一个好主意?或者更好的是每个服务的专业类BuyStatus/RentStatus。

回答

4

我认为这取决于“买/租”与“只买/租只有”关系是否静态动态

如果关系是静态的(一次为所有人),那么直接在ProductCategory上提供这些信息可能会更简单。班级越少越好。另一方面,如果关系是动态的,那么让另一个对象负责维护这种知识可以使管理动态状态变得更容易(例如,一个产品只能租一段时间,然后“买” /租“一段时间等)。

这遵循一个oop规则,它说属性只是值,当属性变得更加复杂时(例如,它们随时间变化并且必须遵循所有更改),然后将它们移动到不同的类中。

+0

该关系已修复。但未来可能会有更多的服务,如额外的销售服务。 – LuckyStrike 2012-03-25 19:09:45

+0

我的经验告诉我,如果我相信某些东西是固定的,大部分时间我都是错的;) – 2012-03-25 19:44:30