2010-05-28 19 views
21

He estado trabajando mucho con PHP. Pero recientemente me enviaron a un trabajo que usa Java. En PHP solía hacer muchos objetos de Singleton, pero este patrón no tiene la misma significación en Java que tiene en PHP. Así que quería ir a una clase de utilidad (una clase con método estático), pero a mi jefe no le gusta este tipo de clases y me pide que vaya para el objeto de servicios. Así que mi suposición es que un objeto de servicio es solo una clase con un constructor que implementa algunos métodos públicos ... ¿Estoy en lo cierto?¿Cuál es la definición de objeto de servicio?

Respuesta

19

Domain-Driven Design define un servicio como:

Un servicio es una operación ofrece como una interfaz que se encuentra solo en el modelo, sin encapsular estado ... [p. 105]

Sí, es una clase con métodos públicos, pero además de eso, implementa una interfaz que expone esos métodos. En su núcleo, el Servicio es la interfaz - la clase que lo implementa es solo un detalle de implementación.

+0

Así que si lo hago bien, para cada clase de utilidad que estoy transformando en servicio ¿se supone que debo crear una interfaz? – MaxouMask

+1

Sí, bueno, pero en OO, todo el concepto de una clase de utilidad es un olor a código. Las clases True OO tienen responsabilidades bien definidas ... –

+0

bien, muchas gracias :) – MaxouMask

2

Encontré otra definición para un objeto de servicio en lugar de una que se describe como una interfaz para clases concretas que están a punto de proporcionar un determinado servicio a través de esa definición de API establecida por la interfaz.

artículo sobre microservicios>Link definición de objeto de servicio:

3: Muchos diseñadores orientados a objetos, incluidos nosotros mismos, utilice el objeto de servicio término en el sentido Driven Design-dominio para un objeto que se lleva a cabo un proceso significativo que no está vinculado a una entidad. Este es un concepto diferente de cómo estamos usando "servicio" en este artículo. Tristemente, el término servicio tiene ambos significados y tenemos que vivir con el polisemen.

Lo que entiendo aquí no es el aspecto técnico como definirlo como una "interfaz" sino más bien el concepto de diseño que describe. También entiendo un service object simplemente un dominio de una clase como su responsabilidad. Por lo tanto, si está desarrollando aplicaciones web, es posible que tenga un objeto de servicio SecurityService que es un componente de SecurityController. El controlador está llamando al servicio para que realmente procese los servicios específicos de seguridad (el dominio).

Cuestiones relacionadas