应该为聚合中的每个对象创建一个单独的类,还是应该将这些对象作为单个聚合类的嵌套类?如何在MVC模式中表示域聚合?
2
A
回答
2
这取决于对象和它所包含的对象有多紧密耦合。如果您有一个Person类,并且该人拥有零至多个电话号码,则通常希望PhoneNumber成为一个单独的类,因为许多不同类型的对象都可能具有电话号码(例如,企业,学校等)。 )。但是,如果对象是自然而然地紧密结合的东西,例如Person对象可以有脚趾,那么内部类可能是有意义的。
您可能想问自己的一些问题是: 1.聚合对象是否需要访问包含类的私有片段?如果是这样,一个内部类是一个很好的选择。 2.聚合对象是否总是只属于一个对象,并且它所属的对象从不改变?如果不是,那么你可能不想要一个内部类。 3.聚合对象是否在聚合对象的上下文之外有意义?如果是这样,它可能不应该是一个内部类。
如果有疑问,通常最好使用单独定义的类,如果没有其他原因会导致耦合关闭并缩小源文件。
也并不是说它不一定是一个无论是或事。您始终可以定义一个单独的类或接口,然后在聚合类中进行子类化/实现。
2
如果聚集的对象是可分离的,即它们可能单独出现,也可能出现在聚合中,那么每个对象都有一个单独的类,并使用类型化的集合来表示聚集。
1
不确定MVC与域聚合有什么关系,因为可以在没有UI的情况下使用后者。
我通常更喜欢将聚合的各个部分分开,因为这些部分可以具有独立的商业含义。当外部类必须在内部类之前加载或无法使内部类公开(至少这些内容适用于Java)时,嵌套类才有意义。
相关问题
- 1. 如何在Telerik MVC Grid聚合头中显示非聚合模型值?
- 2. 域模型聚合
- 3. ASP.NET MVC 3区域和DDD聚合根
- 4. 在聚合表达式
- 5. 如何在数据库模式中表示哈希表集合?
- 6. 如何识别域模型中的聚合根?
- 7. 我应该如何处理ASP MVC中的聚合模型?
- 8. 如何在Scala中编写聚合模式?
- 9. 星型模式:事实表聚合是如何执行的?
- 10. 聚合模式,SOA(SplitJoin OSB)
- 11. 建模聚合根或域服务?
- 12. 存储库模式中的聚合根
- 13. SOA服务中的聚合模式
- 14. Hibernate聚合+ Spring MVC
- 15. 如何在MVC模型中展示MVC视图(* .cshtml)的项目集合ASP.NET MVC
- 16. 域驱动设计的聚合模式和休眠@OneToMany单向
- 17. 如何聚合表达SSRS
- 18. 模糊K模式聚类如何找到聚类中心
- 19. django表单域 - 如何在表单模板中显示值
- 20. 如何在ASP.NET MVC中显示混合形式?
- 21. 仓库模式聚合和聚合根与实体框架4.0
- 22. 如何reolve对包含聚合或子查询的表达式聚合函数
- 23. 如何表示JSON模式中的总和/联合类型
- 24. Mongo聚合 - 表达式中的$?
- 25. 如何表示OOP中的平均值和其他聚合值?
- 26. SQL - JOIN聚合表与非聚合表
- 27. 如何在QT中维护MVC模式
- 28. MVC模式如何在ZKoss中工作
- 29. 如何在Tkinter中实现MVC模式
- 30. 域驱动设计聚合