Stavo pensando a un design per maniglie personalizzate. Il pensiero è di impedire ai clienti di copiare oggetti di grandi dimensioni. Ora una normale classe di handle probabilmente sarebbe sufficiente per questo, ma non risolve il "problema di riferimento ciondolante";
Se un client ha più handle dello stesso oggetto ed elimina l'oggetto tramite uno di essi, tutti gli altri non sarebbero validi, ma non lo sanno, quindi il client potrebbe scrivere o leggere parti della memoria che non dovrebbe avere accesso a
Esiste un modello di progettazione per impedire che ciò accada?
Due idee:
-
Un pattern simile a un osservatore in cui il distruttore di un oggetto notifica tutti gli handle.
-
"Gestisci maniglie" (esiste una cosa del genere?). Tutte le maniglie non puntano davvero all'oggetto, ma a un'altra maniglia. Quando l'oggetto viene distrutto, questo "master-handle" invalida se stesso e quindi tutto ciò che lo riguarda.