Sto costruendo un'intera applicazione con oggetti immutabili, in modo che multi-threading e undo diventino più facili da implementare. Sto usando lo Google Collections Library che fornisce versioni immutabili di Mappa, Elenco e Set.Come faccio a manipolare un albero di oggetti immutabili?
Il mio modello di applicazione si presenta come un albero:
- scena è un oggetto di livello superiore che contiene un riferimento a un nodo principale.
- Ogni nodo può contenere nodi figlio e porte.
un oggetto grafico potrebbe essere simile a questo:
Scene
|
+-- Node
|
+-- Node
|
+- Port
+-- Node
|
+- Port
+- Port
Se tutti questi oggetti sono immutabili, controllato da un oggetto di livello superiore SceneController:
- Qual è il modo migliore per costruire questa gerarchia?
- Come sostituire un oggetto che è arbitrariamente profondo nella struttura ad albero degli oggetti?
- C'è un modo per supportare i collegamenti di ritorno, ad es. un nodo con un attributo "genitore"?
E più in generale:
- ha nessun modelli emerse per affrontare questo tipo di dati?
- C'è letteratura (accademica) disponibile sull'argomento?
- È una buona idea?
Cosa hai già provato? Perché una soluzione semplice per ognuno dei 3 problemi elencati non è abbastanza buona per te? – Roman
Ho una mia implementazione per la costruzione/sostituzione, ma mi piacerebbe sapere dei modelli che altre persone hanno incontrato. – Frederik
Potrebbe essere utile ottenere una copia di Purely Functional Data Structures di Chris Okasaki. –