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à -
ExternalUser
ha una copia di un sottoinsieme di proprietà o proprietà derivate daUser
eUserGroup
1.1.
ExternalUser
può avere ad esempiousername
,fullName
,userGroups
, ecc. come proprietà.1.2 Tutte queste proprietà verranno popolate sulla creazione dell'oggetto e copiate da
User
interno eUserGroups
-
Oggetto di avvolgimento -
ExternalUser
ha riferimenti aUser
eUserGroup
.il 2,1% di
ExternalUser
avrà un% privato diuser
e% diuserGroup
che manterrà il riferimento ai modelli interni.2.2 Metodi come
getName
delegheranno 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?