Ho la seguente struttura di progetto (semplificata):
- dominio
- dto
- Visualizza
 Viene mantenuto il modello   domain   . Le classi   dto    vengono utilizzate per passare i dati da   domain    a   view   . E in   view    ho un controller e una manciata di * req, * res classi per passare i dati via HTTP. Quindi ci sono 3 classi (in modello, dto e vista) per esprimere la stessa cosa. 
 Il problema è che ho avuto un   SalesEntry    e   PurchaseEntry    nel modello. Entrambe le classi erano esattamente identiche, quindi avevo due entità ma solo un   EntryDto    insieme a   EntryReq    e   EntryRes   . Tutto bene. Ora, ho scoperto che ho bisogno di aggiungere alcuni campi, ma solo a   PurchaseEntry   . Così ho aggiunto un po 'di astrazione e raddoppiato le classi in ogni  livello . Questo è stato un grosso costo. Dove ho sbagliato e come dovrebbe essere fatto correttamente? 
In lingue diverse da java probabilmente passerei alcune mappe qua e là, ma in java in particolare ho bisogno di avere una classe concreta in ogni livello. Come semplificarlo?