编程中的服务类是什么?

Sem*_*van 21 language-agnostic domain-service-class

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

Joh*_*ohn 24

一般而言,可能存在由服务控制的域对象的层次结构.如果这些域对象只是没有行为的数据占位符,那么这不适用于面向对象的编程.

请检查以下内容:http://www.martinfowler.com/bliki/AnemicDomainModel.html

更常见的是,在OOP中,域对象组具有其交互形成业务逻辑的行为,并且该逻辑由服务封装.这些服务是有状态的,其状态由这些域对象组成.服务也可以是无状态的,并提供自给自足的功能,想想一个非常简单的计算器API.

想象一下以下示例:有一个HTTP请求来到您的Web应用程序,您必须提取数据,执行一些复杂的计算,一旦完成,将此计算数据作为SOAP消息发送到端点.收到回复后,您应将其返回给发送原始请求的客户端.

您不希望强制客户端手动调用输入的计算和转换.相反,你只想给他一个服务API,它封装了这个逻辑并返回给他预期的结果.

对于Spring应用程序,您有Spring注释:@Service http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Service.html

  • “如果这些领域对象只是数据占位符,那么这对于面向对象的编程来说是不正确的。” 更正 - 这不是关于“真正的”oop,而是关于领域驱动开发。服务在许多方法中有许多定义,特别是,您的示例是 Eric Evan 对服务的定义。而贫血领域模型只是 Martif Fowler(他是 Evans 的朋友)的一个观点。 (2认同)