java - Comparator 在域驱动的 MVC 世界中处于什么位置?

标签 java model-view-controller architecture namespaces domain-driven-design

我有一个类需要以几种不同的方式进行排序,其中许多方式打破了 equals() 契约,所以我需要一堆不同的 Comparator类。我的问题是这些类(class)应该放在哪里?

因此有一些具体的东西可以用作示例命名空间结构并将问题限制为包结构而不是文件结构,让我们假设以下命名空间:

app
  domain
    exception
    hibernatemapping
  mvc
    propertyeditor
    tags
  persistence
    hibernate

领域类存在于domain命名空间中,相关异常和hibernate映射文件分别存在于exceptionhibernatemapping中。 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/

相关文章:

java - 从另一个 jar 文件访问资源

java - 如何在端点函数体内检索请求方法?

c# - 将工作单元与服务或 repo 分离

java - Play Framework vs Scooter Framework vs ActiveWeb——比较?

php - 每个用户都应该有一个单独的孤立数据库吗?

node.js - 一个数据库,支持多区域应用

javascript - 使用 Ember 的 Web 应用程序架构。动画逻辑应该放在哪里?

java - 在特定时区运行 Quartz Scheduler

java - 如何在 spring 批处理作业中更改 ItemWriter 目标文件名?

php - 调用未定义的方法 Closure::query()