在Java中将可重用的纯函数放在哪里?

时间:2018-07-04 12:30:33

标签: spring java-8

我无法确定在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 :(得分:2)

  • 如果该方法中不涉及任何业务逻辑,则我倾向于静态助手类。例如,计算没有任何业务逻辑的日期将是静态助手类的正确选择。
  • 如果该方法涉及一些适当的业务逻辑,则可以选择使用Spring bean
  • 拥有超类可能不是正确的主意。原因here

答案 1 :(得分:0)

我更喜欢静态助手类。使用Java 8,您可以在接口中声明静态方法(并在您的服务中实现)。

对于您的案例,spring bean和static helper类之间没有区别 超级类-没有多重继承功能的好主意。

相关问题