我有一个类需要以几种不同的方式进行排序,其中许多方式打破了 equals()
契约,所以我需要一堆不同的 Comparator
类。我的问题是这些类(class)应该放在哪里?
因此有一些具体的东西可以用作示例命名空间结构并将问题限制为包结构而不是文件结构,让我们假设以下命名空间:
app
domain
exception
hibernatemapping
mvc
propertyeditor
tags
persistence
hibernate
领域类存在于domain
命名空间中,相关异常和hibernate映射文件分别存在于exception
和hibernatemapping
中。 persistence
持有 DAO 接口(interface),在 hibernate
中有基于 hibernate 的实现。所有 MVC Controller 都在 mvc
中,在 propertyeditor
中有专门的属性编辑器(这是 Spring MVC),在 tags
中支持自定义标签的类.
我的直觉说 Comparators
应该位于 domain
命名空间下,也许在 domain.comparator
中,但我不确定。
你会把它们放在哪里,为什么?
更新:许多人建议使用通用的 Util
包。走那条路时,你会通过 UI 助手和域助手来区分 Util
类吗?例如,如果域出于业务逻辑原因需要对事物进行排序,但 UI 需要域不关心的其他排序?基本上,您是否倾向于每层都有一个帮助程序包?
最佳答案
如建议的那样,像 util 或 commons 包这样的东西似乎最有意义,但如果您不知道将某些东西放在哪里,请确保您最终不会将其用作“goto”包。
我还建议查看 package by feature .在这个原因中,您的比较器将只使用它所使用的任何相应功能。同样,这只是一个建议 - 您必须为项目的最佳布局做出决定。
关于java - Comparator 在域驱动的 MVC 世界中处于什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7028993/