Как уже упоминалось, синглтон может быть альтернативой.Тем не менее, обратите внимание, что ваш текущий дизайн легко модульный тест (так как вы вводите зависимость SomeUtil
, которая, таким образом, может быть легко заменена фиктивным объектом во время модульных тестов), в то время как Singleton делает модульное тестирование неудобным и трудным:
- это делает ваши объекты зависимыми от глобального состояния, поэтому труднее правильно настроить ваши тесты и легко допускать ошибки (например, забыв правильно инициализировать Singleton для конкретного теста),
- труднее понять код, так как вы не можете легко определить, зависит или нет данный фрагмент кода от глобального состояния, кроме как на самом деле читая весь код.
При этом, если это реальный служебный класс, т. е. он не имеет внутреннего состояния и не зависит от чего-либо, что может затруднить модульное тестирование (например, БД или файловая система), можно использовать его как Singleton (хотя напрашивается вопрос, зачем вам вообще его создавать - как правило, утилита классовТолько статические методы и закрытый конструктор для предотвращения создания экземпляров).