2010-05-28 10 views
21

Ho lavorato molto con PHP. Ma recentemente sono stato inviato su un lavoro che usa Java. In PHP ero solito fare un sacco di oggetti Singleton ma questo modello non ha lo stesso significato in Java che ha in PHP. Quindi volevo andare per una classe di utilità (una classe con metodo statico), ma il mio capo non ama questo tipo di classi e mi chiede di andare per oggetto servizi. Quindi la mia ipotesi era che un oggetto servizio è solo una classe con un costruttore che implementa alcuni metodi pubblici ... Ho ragione?Qual è la definizione di un oggetto Servizio?

risposta

19

Domain-Driven Design definisce un servizio come:

Un servizio è un'operazione offerto come un'interfaccia che si trova solo nel modello, senza incapsulamento stato ... [p. 105]

Sì, è una classe con metodi pubblici, ma in aggiunta a ciò, implementa un'interfaccia che espone tali metodi. Al centro, il servizio è l'interfaccia - la classe che lo implementa è solo un dettaglio di implementazione.

+0

Quindi, se ho capito bene, per ogni classe di utilità che sto trasformando in servizio dovrei creare un'interfaccia? – MaxouMask

+1

Sì, beh, ma in OO, l'intero concetto di una classe di utilità è un odore di codice. Le vere classi OO hanno responsabilità ben definite ... –

+0

ok grazie mille :) – MaxouMask

2

Ho trovato un'altra definizione per un oggetto servizio invece quella descritta come un'interfaccia per classi concrete che stanno per fornire un determinato servizio attraverso la definizione dell'API impostata dall'interfaccia.

articolo su Microservices>Link definizione per oggetto il servizio:

3: Molti designer orientati agli oggetti, compresi noi stessi, utilizzare l'oggetto del servizio termine nel senso Domain-Driven Design per un oggetto che svolge un processo significativo che non è legato a un'entità. Questo è un concetto diverso rispetto al modo in cui utilizziamo il "servizio" in questo articolo. Purtroppo il termine servizio ha entrambi significati e dobbiamo convivere con il poliseme.

Quello che capisco qui non è l'aspetto tecnico come definirlo come una "interfaccia" ma più il concetto di design che descrive. Capisco anche un service object semplicemente un dominio di una classe come la sua responsabilità. Quindi, se stai sviluppando applicazioni web potresti avere un oggetto di servizio SecurityService che è un componente di uno SecurityController. Il controller chiama il servizio per elaborare effettivamente i servizi specifici di sicurezza (il dominio).

Problemi correlati