【问题标题】:What is the service class in programming? [closed]编程中的服务类是什么? [关闭]
【发布时间】:2015-04-18 08:58:02
【问题描述】:

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

【问题讨论】:

  • 客户端使用服务类与应用程序中的某些功能进行交互。通常它是公开的,并且具有一定的商业意义。例如,TicketingService 类可能允许您购买门票、出售门票等。

标签: language-agnostic domain-service-class


【解决方案1】:

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

我们这里有 Martin Fowler 所说的 Anemic Domain Model

更常见的是,在 OOP 中,一组域对象具有其交互形成业务逻辑的行为。而这个逻辑又被 Service 封装。

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

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

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

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

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

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

【讨论】:

  • thnx,服务类控制我的域对象
  • “如果这些域对象只是数据占位符,那么面向对象编程就不是这样。”更正 - 这不是关于“真正的”oop,而是关于领域驱动开发。服务在许多方法中有很多定义,特别是,您的示例将是 Eric Evan 对服务的定义。而贫血领域模型只是 Martif Fowler(他是 Evans 的朋友)的一个观点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 2011-12-28
  • 1970-01-01
  • 2010-11-11
相关资源
最近更新 更多