Model view controller 如何在MVC模式中表示域聚合?

Model view controller 如何在MVC模式中表示域聚合?,model-view-controller,domain-driven-design,aggregates,Model View Controller,Domain Driven Design,Aggregates,我应该为聚合中的每个对象创建一个单独的类,还是对象应该是单个聚合类的嵌套类 如果聚合对象是可分离的,即它们可以单独出现,也可以在聚合中出现,那么每个对象都有一个单独的类,并使用类型化集合来表示聚合。不确定MVC与域聚合有什么关系,因为可以在没有UI的情况下使用后者 我通常更喜欢将聚合类的各个部分划分为单独的类,因为这些部分本身就具有业务意义。当外部类必须在内部类之前加载,或者无法将内部类公开时(至少这些情况适用于Java),嵌套类才有意义。这取决于对象与其包含的对象之间的紧密耦合程度。如果您有一

我应该为聚合中的每个对象创建一个单独的类,还是对象应该是单个聚合类的嵌套类

如果聚合对象是可分离的,即它们可以单独出现,也可以在聚合中出现,那么每个对象都有一个单独的类,并使用类型化集合来表示聚合。

不确定MVC与域聚合有什么关系,因为可以在没有UI的情况下使用后者


我通常更喜欢将聚合类的各个部分划分为单独的类,因为这些部分本身就具有业务意义。当外部类必须在内部类之前加载,或者无法将内部类公开时(至少这些情况适用于Java),嵌套类才有意义。

这取决于对象与其包含的对象之间的紧密耦合程度。如果您有一个Person类,并且此人有零到多个电话号码,您通常希望PhoneNumber是一个单独的类,因为许多不同类型的对象可能有电话号码(例如,企业、学校等)。但是如果对象是自然紧密耦合的对象,例如Person对象可能有脚趾,那么内部类可能有意义

您可能想问自己的一些问题是: 1.聚合对象是否需要访问包含类的私有部分?如果是这样,内部类是一个不错的选择。 2.聚合对象是否始终只属于一个对象,而它所属的对象从不更改?如果不是,那么您可能不需要内部类。 3.聚合对象是否在聚合对象的上下文之外有意义?如果是这样,它可能不应该是一个内部类

当有疑问时,通常最好使用一个单独定义的类,如果没有其他原因使它保持耦合并且源文件更小的话

也不是说这不一定是非此即彼的问题。您始终可以定义一个单独的类或接口,然后在聚合类中对其进行子类化/实现