Attualmente sto riscrivendo uno dei miei progetti in Java e voglio implementare un livello di servizio che verrà utilizzato da diversi client (CLI / GUI / Web) per comunicare con la mia applicazione principale. Per ora per la maggior parte delegherà le stesse chiamate al modello aziendale, ma voglio aggiungere l'autenticazione utente in seguito e ho letto che un livello di servizio è un buon aggancio per farlo.
Ma non so come scrivere un livello di servizio nel codice, in modo che sia facilmente riusabile con il resto del mio codice.
Ecco quello che potrei pensare:
- Una classe di servizio monolitico che incapsula tutte le funzionalità dell'applicazione (facile da inserire nel codice client, poiché è una classe che può essere utilizzata per fare tutto)
- Classi di servizi multipli, che separano le diverse funzionalità l'una dall'altra (migliore incapsulamento, ma più codice di iniezione)
- Classi di servizi multipli con una classe Service Provider che conosce tutte le altre classi di servizio (in pratica l'opzione 2, ma più facile da iniettare poiché il fornitore di servizi può essere utilizzato per accedere all'intero livello di servizio)
- Classi di servizio statico (di facile accesso, ma con tutti gli svantaggi delle classi / metodi statici)
L'opzione 2 probabilmente è la strada da percorrere, ma ascoltando il termine Service Layer, in qualche modo penso a questa grande classe che mi fornisce tutto ciò che ho sempre desiderato fare con la mia applicazione.
Qual è il modo corretto di implementare un Service Layer?