Quasi tutti i software hanno un numero di strutture di dati interne che non vogliamo esporre esternamente (tramite le API ad esempio).
Diciamo che abbiamo alcune classi che rappresentano le tabelle del database 1: 1 - User , UserGroup , GroupPermission , ecc.
Quindi possiamo avere una classe esterna ExternalUser che verrà esposta su un'API, esponendo alcuni dettagli dell'utente e dettagli del gruppo di utenti.
Abbiamo due opzioni per ciò che le proprietà di ExternalUser possono essere:
-
Copia proprietà -
ExternalUserha una copia di un sottoinsieme di proprietà o proprietà derivate daUsereUserGroup1.1.
ExternalUserpuò avere ad esempiousername,fullName,userGroups, ecc. come proprietà.1.2 Tutte queste proprietà verranno popolate sulla creazione dell'oggetto e copiate da
Userinterno eUserGroups -
Oggetto di avvolgimento -
ExternalUserha riferimenti aUsereUserGroup.il 2,1% di
ExternalUseravrà un% privato diusere% diuserGroupche manterrà il riferimento ai modelli interni.2.2 Metodi come
getNamedelegheranno al% interno% co_de, ecc.
Riesco a vedere i pro e i contro di entrambi in termini di perdite di dati, utilizzo della memoria e gestione delle sessioni se si hanno a che fare con transazioni.
C'è qualche schema / standard o una ragione per cui un'opzione è molto migliore rispetto all'altra?