Где поместить многоразовые чистые функции в Java? - PullRequest
0 голосов
/ 04 июля 2018

Я не могу решить, где хранить многоразовые чистые функции в Java. Пример:

class ServiceA(){

   private C pureFunction1(A a, B b) {
     //code to produce C c;
     return c;      
   }
}


class ServiceB(){
   private C pureFunction1(A a, B b) {
     //code to produce C c;
     return c;      
   }
}

Согласно DRY я должен где-то извлечь эту чистую функцию.

Я подумал поместить его в следующие места:

  • Класс статического помощника (запах + против принципа обращения зависимостей SOLID)
  • Spring bean (не слишком ли это просто для чистой функции)
  • Суперкласс (не подходит для двух независимых сервисов)
  • Интерфейс с методом по умолчанию (Интерфейсы имеют различное назначение)

Где бы вы порекомендовали разместить код для pureFunction1?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018
  • Я бы предпочел статический вспомогательный класс, если в методе нет бизнес-логики. Например, вычисление дат, которые не имеют никакой бизнес-логики, будет правильным кандидатом в статический вспомогательный класс.
  • Spring bean может быть вариантом, если в методе задействована правильная бизнес-логика
  • Наличие суперкласса может быть неправильной идеей. Причины здесь
0 голосов
/ 04 июля 2018

Я предпочитаю статический класс помощника. С Java 8 вы можете объявить статический метод в интерфейсе (и реализовать его в ваших службах).

Нет разницы между классом Spring Bean и классом помощника для вашего случая Суперкласс - плохая идея без функции множественного наследования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...