2015-04-18 7 views
12

Vedo sempre alcune classi che si chiamano "ClassNameService", bene qual è la differenza come logica? Qual è l'obiettivo di queste classi di servizio?Qual è la classe di servizio in programmazione?

+1

una classe di servizio è utilizzato da un client per interagire con alcune funzionalità nell'applicazione. Di solito è pubblico e ha un significato commerciale. Ad esempio, una classe TicketingService potrebbe consentire di acquistare Ticket, sellTicket e così via. –

risposta

13

In generale, potrebbe esistere una gerarchia di oggetti dominio controllati dai servizi. Se questi oggetti di dominio sono solo segnaposti di dati senza comportamento, questo non è vero per la programmazione orientata agli oggetti.

Controllare i seguenti passaggi: http://www.martinfowler.com/bliki/AnemicDomainModel.html

Più comunemente, all'interno di OOP, gruppo di oggetti di dominio hanno un comportamento cui interazione forma logica di business e questa logica è incapsulato dal servizio. Tali servizi sono stateful, con il loro stato costituito da questi oggetti di dominio. I servizi possono anche essere senza stato e offrono funzionalità auto-sufficienti, pensate a un'API calcolatrice molto semplice.

Immaginate seguente esempio: C'è una richiesta HTTP, che è venuto a l'applicazione Web e si deve estrarre i dati, preforme qualche calcolo complesso e, una volta fatto, inviare questi dati calcolati come messaggio SOAP a un endpoint. Una volta ricevuta la risposta, è necessario restituirla al cliente che ha inviato la richiesta originale.

Non si vuole forzare il client a richiamare manualmente il calcolo e la trasformazione dell'input. Invece, si vuole semplicemente offrirgli un servizio API che incapsula questa logica e restituisce a lui il risultato atteso.

Per le applicazioni primavera si ha l'annotazione Primavera: @Service http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Service.html

+0

thnx, classe di servizio controlla il mio oggetto dominio –

+0

"Se questi oggetti dominio sono solo segnaposti di dati, questo non è vero per la programmazione orientata agli oggetti." correzione - non si tratta di "vero" oop, si tratta di Domain Driven Development. Il servizio ha molte definizioni in molti approcci, in particolare, il tuo esempio potrebbe essere la definizione di servizio di Eric Evan. E il modello di dominio anemico è solo un'opinione di Martif Fowler (che è amico di Evans). – drakonli

Problemi correlati