【问题标题】:Is correct to have private method in service layer? [closed]在服务层中有私有方法是否正确? [关闭]
【发布时间】:2020-08-01 16:04:33
【问题描述】:

我正在使用 Java 和 Spring 框架开发服务,我在服务层有业务逻辑,但我需要尊重单一职责,我做了很多验证和其他事情,目前,我有一个私有方法服务类来做这些事情,但是我认为有很多方法,将这些方法放在服务中是正确的还是在自定义包中的另一个类中更好?

【问题讨论】:

  • 为什么不呢?如果有一些方法只供Service类使用,最好声明为private
  • 我觉得有很多方法可以做一些具体的事情,把它分成一个单独的类不是更好吗?

标签: java spring


【解决方案1】:

这是来自https://howtodoinjava.com/java9/java9-private-interface-methods/ 的一个简单示例,它演示了在哪些情况下您可能需要在服务中使用一些私有方法。

import java.util.function.IntPredicate;
import java.util.stream.IntStream;

public interface CustomCalculator 
{
     default int addEvenNumbers(int... nums) {
       return add(n -> n % 2 == 0, nums);
}

     default int addOddNumbers(int... nums) {
      return add(n -> n % 2 != 0, nums);
     }

    private int add(IntPredicate predicate, int... nums) { 
      return IntStream.of(nums)
        .filter(predicate)
        .sum();
    }
}

在这种情况下,添加这个特定的私有方法“add”并不是不合逻辑的,因为它在你的公共方法中服务,所以它根本不是反模式。

问题可能在于在测试中测试这些私有方法。

相比之下,你不应该有太多的私有方法在服务中。如果是这样,您应该在帮助类中分离这些私有方法,并将它们作为依赖项添加到服务中。这样,您可以将它们与服务分开测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2011-09-02
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    相关资源
    最近更新 更多