Je construis une application complète à partir d'objets immuables, ce qui rend l'implémentation et l'annulation de plusieurs threads plus faciles à mettre en œuvre. J'utilise le Google Collections Library qui fournit des versions immuables de Map, List et Set.Comment manipuler un arbre d'objets immuables?
Mon modèle d'application ressemble à un arbre:
- Scène est un objet de niveau supérieur qui contient une référence à un nœud racine.
- Chaque nœud peut contenir des nœuds enfants et des ports.
Un graphe d'objet pourrait ressembler à ceci:
Scene
|
+-- Node
|
+-- Node
|
+- Port
+-- Node
|
+- Port
+- Port
Si tous ces objets sont immuables, contrôlés par un objet SceneController de niveau supérieur:
- Quelle est la meilleure façon de construire cette hiérarchie?
- Comment est-ce que je remplacerais un objet qui est arbitrairement profond dans l'arbre d'objet?
- Existe-t-il un moyen de prendre en charge les back-links, par ex. un nœud ayant un attribut "parent"?
Et plus généralement:
- Avez des modèles pour faire face à émergé ce type de données?
- Y a-t-il de la littérature (académique) disponible sur le sujet?
- Est-ce une bonne idée?
Qu'avez-vous déjà essayé? Pourquoi une solution simple pour chacun des trois problèmes énumérés ne vous convient-elle pas? – Roman
J'ai ma propre implémentation pour la construction/le remplacement, mais j'aimerais entendre parler des modèles que d'autres personnes ont rencontrés. – Frederik
Vous pouvez trouver utile d'obtenir une copie des structures de données purement fonctionnelles par Chris Okasaki. –