Ho una gerarchia di oggetti con un numero di nodi foglia che contribuirà ai valori di riepilogo per l'oggetto padre (in particolare: costo del progetto e metratura).
Qual è il modo più efficiente per calcolare questi valori mentre viene progettato il progetto?
Ulteriori dettagli
Parent
ListOne
NodeA
NodeA.1
NodeA.2 ...
NodeB
NodeB.1
NodeB.2 ...
ListTwo ...
- Sarà selezionato un solo nodo punto # alla volta, quindi sarà NodeA.1 O NodoA.2 ma non entrambi saranno selezionati.
- Indipendentemente dal fatto che NodeA e NodeB siano selezionati indipendentemente l'uno dall'altro. Quindi potrei avere qualsiasi combinazione di nodi selezionati / attivi A - > Z
Un approccio è semplicemente quello di scorrere ogni Elenco, ogni Nodo e ciascun nodo foglia e sommare i valori solo quando il nodo foglia è selezionato.
Un altro approccio potrebbe essere quello di creare un gestore di eventi per le variabili di progetto padre a cui ogni bambino può poi sparare quando cambiano i loro valori. La ruga qui è che avrò dei valori specifici del Nodo che voglio anche tenere traccia. In altre parole, sto monitorando il costo del progetto, il costo di listino e il costo del nodo.
Un altro approccio sarebbe una gerarchia di gestori di eventi che si attivano quando l'elemento selezionato cambia e quindi notifica ai genitori la modifica. Quindi il cambiamento di un nodo foglia alla fine tornerebbe a cascata al Progetto dopo che un certo numero di eventi era stato sparato.
In questo momento, la struttura complessiva del progetto è piuttosto piccola: solo tre o quattro elenchi, ciascuno con circa sei nodi ciascuno con quattro o sei nodi foglia ciascuno. A causa delle dimensioni ridotte, non sono preoccupato tanto del tempo di calcolo quanto del mantenimento di questo e della possibilità di estenderlo in futuro con l'aggiunta di più Liste, Nodi, ecc.
Modifica:
Il progetto che guida questa domanda è scritto in C # e in realtà ha un altro livello tra l'Elenco e i nodi foglia finale. Penso che la domanda sia pertinente ai programmatori C ++ e Java poiché si occupa delle responsabilità tra i bambini e gli oggetti genitore quando un valore del genitore dipende dai suoi figli e nipoti. Una risposta su misura per C # sarebbe una salsa, ma sto cercando l'approccio più robusto / manutenibile in questo caso.