39

我总是看到一些名为“ClassNameService”的类,那么逻辑有什么区别?这些服务类的目标是什么?

4

1 回答 1

34

一般来说,可能存在由服务控制的域对象的层次结构。如果这些领域对象只是数据占位符,没有行为,那么面向对象编程就不是这样了。

我们这里有 Martin Fowler 所说的贫血域模型

更常见的是,在 OOP 中,一组域对象具有其交互形成业务逻辑的行为。反过来,此逻辑由Service封装。

此类服务是有状态的,它们的状态由这些域对象组成。服务也可以是无状态的并提供自给自足的功能。

想象一下,如果你愿意的话,一个非常简单的计算器 API。

一个 HTTP 请求被发送到您的应用程序,然后应用程序使用 API 执行数据提取和一些复杂的计算。然后,应用程序端点返回一个 HTTP 响应,其中包含作为 SOAP/REST/等的计算数据。信息。

收到响应后,应将其返回给发送原始请求的客户端。

您不想强迫客户手动调用输入的计算和转换。相反,您只想为他们提供一个服务 API ,该 API封装了此逻辑并向他们返回预期结果。

对于 Spring 应用程序,您有 Spring 注释@Service

于 2015-04-18T09:18:30.327 回答