Immagino che questa sia l'eterna domanda e entrambi gli approcci hanno i loro pro e contro e molti seguaci che giurano su di loro.
L'approccio repository
che sembra favorire (avere un repository/gateway qualunque sia il nome che si chiama) per gestire le operazioni CRUD rende le classi di business attuali più piccole e più snelle, poiché probabilmente contengono solo dati e possibilmente regole di validazione/business.
In questo caso, implementeresti le operazioni CRUD una volta, ma molto probabilmente una volta per ogni tipo di oggetto con cui hai a che fare.
D'altro canto, l'approccio smart business object
potrebbe sostenere che l'operazione CRUD su una determinata entità è specifica comunque per quell'entità, quindi il codice per selezionare, aggiornare, eliminare tale entità sarà sempre specifico, quindi potrebbe anche risiedere all'interno di quell'oggetto stesso.
In questo caso, implementeresti le operazioni CRUD una volta per ogni classe di oggetti. In questo caso, non vedo alcun grosso svantaggio rispetto all'approccio del repository.
Io personalmente mi avvicino all'approccio del repository oggi stesso, ma vedo anche benefici nell'approccio "oggetto di business intelligente": entrambi sono validi, e credo che dovrai solo convincere il tuo nuovo architetto della tua posizione o mettersi d'accordo con un approccio diverso.
Marc
fonte
2009-10-05 12:09:58
Vorrei aggiungere che i casi di base di CRUD possono essere implementati solo una volta in un repository generico (a seconda della lingua), e quindi è solo necessario implementare metodi specializzati per ciascuna entità in futuro. (Questo può interessare anche gli oggetti business intelligenti). –