У меня есть класс, который нужно сортировать несколькими способами, многие из которых нарушают контракт equals()
, поэтому мне нужно иметь кучу разных классов Comparator
.У меня есть вопрос, где эти классы должны жить?
Чтобы можно было использовать что-то конкретное в качестве примера структуры пространства имен и ограничить вопрос структурой пакета, а не структурой файла, давайте предположим следующие пространства имен:
app
domain
exception
hibernatemapping
mvc
propertyeditor
tags
persistence
hibernate
Классы доменов находятся в пространстве имен domain
, а связанные файлы исключений и отображения гибернации - в exception
и hibernatemapping
соответственно.persistence
содержит интерфейсы DAO с реализациями на основе гибернации в hibernate
.Все контроллеры MVC живут в mvc
, со специализированными редакторами свойств (это Spring MVC) в propertyeditor
и классами, которые поддерживают пользовательские теги в tags
.
Мой инстинкт говорит, что Comparators
должножить в пространстве имен domain
, возможно, в domain.comparator
, но я не уверен.
Где бы вы их разместили и почему?
Обновление: Количество людейпредложили использовать общий пакет Util
.Идя по этому пути, вы бы отделили классы Util
от помощников пользовательского интерфейса от помощников домена?Например, если домен должен был сортировать вещи по причинам бизнес-логики, но для пользовательского интерфейса нужны дополнительные сортировки, которые не заботятся о домене?По сути, вы бы хотели иметь вспомогательный пакет для каждого слоя?