服务class(层)中的方法是否可以调用同一服务中的另一个方法?

Could a method in the service class (layer) call another method in the same service?

求教是否违反了SOA中的Service层设计原则。我的设计很简单- Endpoint -> Service -> Repository。服务层 return 将 DTO 转换为响应对象的端点。

目前我的端点和服务层合同如下

端点

public interface Order {

     OrderInfoResponse getOrderInfo(String orderId);

     OrderStatusResponse isOrderComplete(String orderId);
}

服务

public interface OrderService {

    OrderDTO getOrder(String orderId);

    boolean getOrderStatus(String orderId);
}

现在在我的实现中,getOrderStatus 服务方法调用 getOrder 方法来查询订单,然后 return 是检索到的订单实体的布尔字段。

到目前为止我的推理:

  1. 为什么我有一个端点来检索状态?
    • 我要求我的应用程序仅显示订单状态。我认为,让端点 return 成为一个 "lightweight" 对象 - OrderStatusResponse,它基本上只包含一个布尔标志,这将是一个更简单的 API,网络上的负载更轻,更容易供消费者理解和解析等
  2. 单独的服务方法会将我的端点与现有的 getOrderInfo 服务方法及其预期操作分离。如果有更多需求,专用服务方法将提供更大的灵活性
  3. 反驳上述观点,我的端点不能使用现有的 getOrderInfo 服务方法,检索完整的 Order DTO 并提取必要的布尔字段并构建响应吗?那样的话,根本就没有新的服务方式。

问题:

  1. [MAIN Q] 让一个服务方法调用另一个服务方法是否可以接受 服务 class?
  2. 如果不是,正确的方法是什么?
  3. 我的推理有缺陷吗?

感谢您的阅读。

从您的服务中调用您自己的 API 没有问题 - 如果它对 "public" 开放,则它是开放供您内部使用的。关键是在你的服务内部,了解内部服务结构,你就可以走捷径。例如,在您的情况下,当您只需要订单状态时,为什么要检索完整订单