2

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

4

3 回答 3

2

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

于 2009-01-17T01:08:53.153 回答
2

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

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

如有疑问,通常最好使用单独定义的类,如果没有其他原因导致它不断耦合并且您的源文件更小。

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

于 2009-01-17T01:34:03.413 回答
1

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

我通常更喜欢将聚合的各个部分制作为单独的类,因为这些部分可以单独具有业务意义。当外部类必须在内部类之前加载或者当你不能公开内部类(至少这些东西适用于 Java)时,嵌套类是有意义的。

于 2009-01-17T01:15:29.803 回答