Informazioni sul modello di dominio anemico. Anch'io ero confuso dagli oggetti che vengono usati come strutture con getter / setter. Non mi piace particolarmente come viene utilizzato per TUTTO, specialmente nei progetti Java. Tuttavia, c'è un caso per questo design.
Un sistema può avere più computer che utilizzano più lingue. Gli oggetti possono essere utilizzati da javascript in un browser, un server C ++ app, un server di applicazioni Java, alcuni servizi web implementati in Python su una rete diversa, ecc.
Alcuni comportamenti sono diversi se si è sul server o sul client. Considera un metodo "salva". Se l'oggetto è in javascript, non può usare la stessa identica tecnica per ottenere quei dati nel database che il codice lato server farebbe. È possibile nascondere una chiamata di servizio nel metodo "salva" javascript. Ma non è male che il codice sia "consapevole" del livello in cui si trova e chiama esplicitamente il servizio.
Alcuni comportamenti non dovrebbero nemmeno esistere a seconda del livello in cui ti trovi. Considera un metodo "disegna". Questo sarebbe rilevante solo nel javascript lato client. Il comportamento dell'imballaggio con i dati può violare i principi della separazione. Il disegno dovrebbe essere fatto solo sui computer front-end. Sebbene tu possa dare all'oggetto diversi metodi su ogni livello, non sembra giusto.
Invece vai con il vecchio stile in stile C. Hai un oggetto simile a una struttura che passi tra i computer. (multi-lingua, diverse reti, lato server, lato client). I metodi in stile C sono "servizi" e potrebbero essere un servizio web. È possibile che si stia utilizzando un polimorfismo OOP pulito all'interno di ciascun livello, ma le app comunicano nella vecchia tecnica in stile C. (che non è sempre una brutta cosa).