Modifica lo stato dell'oggetto in diversi punti del programma

1

Questo non riguarda se i getter / setter abbiano torto o no. Comprendo il suo impatto sull'incapsulamento e questa domanda è stata sollevata qui e SO più volte già. Inoltre, non voglio solo chiedere un esempio di come cambiare lo stato degli oggetti, poiché tutti gli esempi che ho visto sono così ingenui da essere pratici solo per oggetti semplici. Voglio chiedere un esempio su termini più specifici in modo che io possa fare in modo che la gomma incontri la strada in modo molto pratico riguardo a questo concetto.

La domanda

In che modo lo stato di un oggetto può essere modificato quando uno dei suoi oggetti dati non può essere inizializzato sulla costruzione dell'oggetto genitore per iniziare?

Più specificamente

Ancora più specificamente, ho questa situazione in cui sto definendo un'entità di dominio per un'API rappresentativa di un'entità dati in un sistema di terze parti i cui dati sono archiviati in file. (Per questa domanda sto usando l'entità dominio / dati per distinguere la differenza tra i due). Questo è un requisito per garantire l'accoppiamento libero tra gli strati e il fatto che, sebbene le entità siano rappresentative l'una dell'altra, non sono rappresentazioni uno-a-uno, in linea di principio più rappresentative. Il codice cliente sarà in grado di creare queste entità di dominio e commettere una transazione interna progettata per coordinare la scrittura nei file. Una delle proprietà dell'entità di dominio è un oggetto Handle che contiene l'ID di handle dell'entità di dati di terze parti in modo che eventuali modifiche successive all'entità di dati nel file possano essere facilmente e rapidamente coordinate. Questo ID handle non può essere impostato sull'entità dominio finché non lo acquisisce nel livello di accesso ai dati nella prima scrittura.

In poche parole

Quindi in uno scenario in cui l'oggetto non può ottenere tutto il suo stato in costruzione, ma ottenere il resto in un punto diverso del programma (e forse anche un livello applicativo completamente diverso), come dovrebbe apparire senza rompere i principi dell'incapsulamento e Dillo a-non-chiedere?

Btw ... Sto usando c #, quindi qualsiasi esempio comparabile lungo queste linee mi aiuterebbe a relazionarmi meglio.

    
posta bjhuffine 10.02.2016 - 22:45
fonte

0 risposte

Leggi altre domande sui tag