.net 作为聚合根的域驱动设计查找表

.net 作为聚合根的域驱动设计查找表,.net,oop,design-patterns,domain-driven-design,.net,Oop,Design Patterns,Domain Driven Design,我们有一个web应用程序,您可以在其中访问购买和租赁两种服务/功能。在第一步中,您必须从DropDownList中选择ProductCategory。并非所有产品类别都可以购买或租赁。我们有5个产品类别: A:买/租 B:买/租 C:买/租 D:只买 E:只有租金 如何以领域驱动的方式进行设计?在我看来,购买/租赁财产不是产品类别的财产,而是服务本身的财产: public class Service { public string Name; // Buy or Rent p

我们有一个web应用程序,您可以在其中访问购买和租赁两种服务/功能。在第一步中,您必须从DropDownList中选择ProductCategory。并非所有产品类别都可以购买或租赁。我们有5个产品类别:

A:买/租 B:买/租 C:买/租 D:只买 E:只有租金 如何以领域驱动的方式进行设计?在我看来,购买/租赁财产不是产品类别的财产,而是服务本身的财产:

public class Service
{
     public string Name; // Buy or Rent
     public List<ProductType> AllowedTypes; 
}
编辑第二个示例:


两项服务都有一些共享状态,例如创建或完成,但也有一些特殊状态,例如购买状态-1。对两个服务使用相同的状态类是一个好主意吗?或者最好是针对每个服务BuyStatus/RentStatus创建一个专门的类。

我认为这取决于buy/rent与only buy/only rent的关系是静态的还是动态的

如果关系是一次性静态的,那么直接在ProductCategory上获取这些信息可能会更简单。上课越少越好

另一方面,如果关系是动态的,那么让另一个负责维护此类知识的对象可以更容易地管理动态状态,例如,一个产品可以只租赁一段时间,然后购买/租赁一段时间等等


这遵循一个面向对象的规则,即属性只是值,当属性变得更复杂时,例如,它们随着时间的变化而变化,您必须遵循所有的变化,然后将它们移动到单独的类中。

我认为这取决于购买/租赁与仅购买/仅租赁的关系是静态的还是动态的

如果关系是一次性静态的,那么直接在ProductCategory上获取这些信息可能会更简单。上课越少越好

另一方面,如果关系是动态的,那么让另一个负责维护此类知识的对象可以更容易地管理动态状态,例如,一个产品可以只租赁一段时间,然后购买/租赁一段时间等等


这遵循一条oop规则,即属性只是值,当属性变得更复杂时(例如,它们随着时间的变化而变化),您必须遵循所有的变化,然后将它们移动到单独的类中。

关系是固定的。但未来可能会有更多的服务,比如额外的销售服务。我的经验告诉我,如果我相信某件事是固定的,大多数时候我是错的;这种关系是固定的。但未来可能会有更多的服务,比如额外的销售服务。我的经验告诉我,如果我相信某件事是固定的,大多数时候我是错的;