Blocca oggetto nella classe base: privato o protetto? [chiuso]

0

Ho una classe base che contiene alcuni elenchi, code e altri campi che determinano il suo stato. Nella classe base accedo solo a questi campi all'interno di un oggetto lock protetto poiché potrebbero esserci più thread che lo utilizzano. Fornisco metodi per gli eredi di questa classe base e questi metodi usano l'oggetto lock per garantire che lo stato rimanga valido. (In altre parole, le classi che ereditano dalla base accedono ai metodi piuttosto che ai singoli campi in modo che non abbiano bisogno di sapere / ricordare di usare l'oggetto lock). Quindi la mia inclinazione è di rendere privato l'oggetto e i campi di blocco, quindi non ho mai bisogno di preoccuparmi degli eredi che li usano erroneamente. Lo svantaggio di questo approccio è che ogni volta che si ereditano le classi hanno bisogno di nuove funzionalità con questi campi, ho bisogno di modificare la classe base per creare un nuovo metodo.

C'è una buona pratica che mi manca? In caso contrario, qual è l'opzione migliore, blocco e campi privati o protetti?

    
posta public wireless 28.02.2015 - 00:59
fonte

1 risposta

2

Dipende, lo stato che stai bloccando è privato o protetto?

Se è protetto, ti raccomando riconsiderare .

Una volta riconsiderato, rendi l'oggetto lock pubblico come lo stato condiviso più pubblico. Se ritieni che i tipi derivati possano utilizzare correttamente lo stato, devi fidarti di loro per gestire correttamente il blocco. Se non fornisci il lucchetto, saranno tentati di avere un altro meccanismo di blocco che porta a possibili deadlock, bug di concorrenza e guerra termonucleare.

    
risposta data 28.02.2015 - 02:14
fonte

Leggi altre domande sui tag