Volevo solo assicurarmi di comprendere e articolare correttamente la differenza tra questi due concetti.
Ho sempre pensato a un dettaglio di implementazione come il funzionamento interno di una classe concreta dietro la sua interfaccia pubblica esposta.
es .: Utente: getEmailAddress restituisce una stringa. Può recuperare questi dati da uno dei due attributi privati denominati "email" o "indirizzo email".
Chiunque invochi questo metodo non si preoccupa se riceve un indirizzo email. Questo è un dettaglio di implementazione.
Ho notato che le "preoccupazioni tecniche" d'altra parte spesso emergono durante le discussioni su Layered Architecture in cui il livello Infrastructure è responsabile del "come" del nostro livello Dominio che descrive il problema e definisce un insieme di interfacce per affrontare questo problema.
es.: "In che modo" invio effettivamente questa e-mail, persisto di questi dati o ho cancellato questa password come descritto nel dominio?
Una o più classi all'interno del livello infrastruttura "possono" implementare la stessa interfaccia e queste classi che condividono un'interfaccia risolveranno per definizione lo stesso problema tecnico (invio di posta, dati persistenti, ecc.).
Diresti che queste definizioni sono accurate?
Grazie.