2009-04-14 6 views
0

En gros, dans mon application je veux stocker tous les noeuds créés par l'utilisateur dans une liste globale, par exemple comme:Hiérarchie vs Fusionné Liste

GlobalComposition = { collection } 

qui stockera les noeuds comme:

ImageInput01, ImageInput02, Blur01, Sharpen01, Contrast01, Contrast02 

Ce que je ne peux pas décider est si je devrais les stocker dans une collection linéaire «1 dimensionnelle», ou seulement stocker le noeud de base qui contient d'autres noeuds? Donc pour quelque chose comme:

ImageInput01 -> Blur01 -> Sharpen01 -> Contrast01 

de stocker seulement ImageInput01. Cela me permet d'utiliser les mêmes noms pour les nœuds d'action qui viennent après le nœud de base.

Lequel serait le meilleur système de nommage unique pour les nœuds, la performance, traversant facilement les nœuds dans la composition, etc?

Pour moi, garder la hiérarchie semble plus raisonnable mais je veux connaître les pensées des gens.

Répondre

1

Certes, une hiérarchie vous donnera plus de puissance du point de vue de la taxonomie. En outre, la recherche d'un arbre est plus efficace que la recherche dans une collection unidimensionnelle dans la plupart des cas.

Vous pouvez également utiliser .ToList() pour une collection unidimensionnelle aussi longtemps que vous utilisez des collections génériques .NET.

Malheureusement, une hiérarchie est un peu plus difficile à implémenter, mais en général, si vous avez besoin d'une hiérarchie, vous pouvez profiter des fonctionnalités qu'elle vous offrira.