Ho una lunga esperienza nella programmazione di progetti Java EE, ma come ho notato la maggior parte del lavoro che ho fatto era con Transaction Script
(anti) pattern.
Quindi voglio imparare ad usare un modello di dominio ricco, ma poi c'è una domanda, l'oggetto dominio deve essere dipeso dai servizi container / di sistema (come persistenza, posta, ...)?
Ho letto questo articolo e non sono affatto d'accordo!
- In che modo i servizi vengono inizializzati e iniettati in entità di dominio?
- Che dire del paradigma della responsabilità unica?
- E non è contro la riusabilità?
Ho letto anche Applicando UML e Pattern un libro fantastico, ma non so perché non sia stato autore descrivere il modo in cui le responsabilità devono essere assegnate alle entità dopo aver definito il livello di accesso ai dati (nel capitolo 38).
Quindi qual è la prassi migliore per avere un modello di dominio ricco e non avere dipendenza dai servizi di contenitore / sistema!
Un esempio, considera lo scenario seguente in un software:
- Ci sono agenti (che funzionano con il sistema)
- L'attività dei nostri agenti sta vendendo polizze assicurative.
- Ogni tipo di polizza assicurativa ha un tipo speciale di carta prestampata che viene consegnata agli agenti e gli agenti li consegnano agli assicurati.
-
Dobbiamo monitorare il numero di schede disponibili di ciascun agente.
-
Quindi esiste un caso d'uso, che registra il numero di carte di ciascun tipo assegnato a ciascun agente.
- Esiste un caso d'uso, per registrare il numero di schede inutilizzate danneggiate di ciascun tipo.
- E le carte vengono utilizzate in quanto l'agente vende polizze assicurative.
Credo che Rich Domain Model suggerisca che avrò un metodo come segue nella classe agent:
class Agent {
int computeRemainigCards(CardType cardType) {}
}
Ma poi l'Agente dipenderà da 3 classi DAO per una sola responsabilità:
- Uno per il calcolo di SUM del conteggio di ciascun tipo di carta assegnato a un agente.
- Uno per il calcolo del conteggio delle carte utilizzate (vendendo polizze assicurative).
- Uno per il calcolo della SOM delle carte invendute danneggiate.
Credo che renderà le entità di dominio un disastro. Allora, qual è la buona pratica?