Questo dipende dall'architettura dell'applicazione. Ad esempio:
- nel MVC originale, il controller e la vista possono entrambi accedere agli oggetti del modello.
- in MVP , il controller funge da intermediario ( che consente al modello di essere su un server remoto), quindi in questo caso preferiresti aspettare alcuni oggetti DTO da essere usato.
Ma dipende anche dalla semantica dei tuoi oggetti:
- gli oggetti del tuo Paese possono essere clonati (localmente o in remoto tramite la serializzazione / deserializzazione) perché contengono solo la copia di uno stato fisso (ad esempio nome del paese, lingue ufficiali, valuta)?
- o è il tuo Paese un oggetto che è unico e che può avere il suo stato potenzialmente aggiornato da eventi esterni alla tua applicazione (ad esempio una stima della popolazione basata su un modello che stima la crescita della popolazione ogni secondo o semplicemente perché diversi clienti potrebbero aggiornare l'oggetto contemporaneamente?
In quest'ultimo caso, non avresti mai manipolato in modo definitivo un oggetto modello: avresti dovuto lavorare con un DTO o un oggetto proxy e usare alcuni identity mapper . Ma questo renderà immediatamente il problema più complesso, sollevando la questione di concorrenza ottimistica vs concorrenza pessimistica .