Collegamento da bambino a genitore - cattiva idea?

15

Ho una situazione in cui i miei genitori ne sono al corrente (duh) ma voglio che il bambino sia in grado di fare riferimento al genitore. La ragione di ciò è che voglio che il bambino abbia la capacità di designarsi come il più importante o meno importante quando lo si sente. Quando il bambino fa questo, lo sposta in cima o in fondo ai figli del genitore.

In passato ho usato una proprietà WeakReference sul figlio per fare riferimento a lui, ma sento che aggiunge un sovraccarico fastidioso, ma forse è solo il modo migliore per farlo.

Questa è solo una cattiva idea? Come implementeresti questa abilità in modo diverso?

Aggiornamento 1: Aggiungere più contesto Questo è un sistema di rendering in modo che il contenitore genitore sia un elenco di finestre raggruppate insieme. L'elemento figlio (finestra) che dice "Sono molto importante!" vuole fondamentalmente essere visualizzato nella parte superiore del resto delle finestre.

Il genitore è solo un contenitore logico per raggruppare questi bambini. Posso vedere dove aggiungere un evento per segnalare che la richiesta di essere in cima è una buona idea. Ma l'implementazione (ciò che il bambino vuole fare con il genitore) a parte, perché non vorresti avere un collegamento genitore figlio- > Le liste collegate doppi fanno così le persone possono attraversare da e verso qualcosa.

    
posta Thraka 22.11.2012 - 03:33
fonte

3 risposte

17

Is this just a bad idea?

Spesso.

  • Interrompe l'incapsulamento del genitore.
  • Aumenta l'accoppiamento in entrambi.
  • Serve come punto di rottura per il bambino per raggiungere il resto del sistema, aumentando l'accoppiamento con qualsiasi cosa che si avvicini vagamente (perché le persone abuseranno di tale riferimento)
  • Limita il tuo design se desideri bambini senza genitori.

Come si fa a fare meglio? Il bambino non dovrebbe sapere o preoccuparsi che sia in una collezione. Invece di considerarsi importante, dovrebbe segnalare che un evento di cui è a conoscenza è accaduto in modo che chiunque si preoccupi (il genitore) possa aumentare la sua priorità (o qualunque sia la regola per il contesto in cui vive il bambino). Non ne sono entusiasta e forse preferirei una migliore separazione delle preoccupazioni tra il modello del bambino e il comportamento importante, ma non posso elaborare senza più contesto.

[edit:]

Sì, i sistemi di rendering sono un caso in cui la proprietà dei genitori ... beh, non voglio dire ha senso, ma è un caso in cui è stato fatto e non è la fine del mondo. Per dare un focus di controllo, preferirei comunque il disegno in cui il gestore di input (o qualsiasi altra cosa) percorre l'albero e sa quale collezione riordinare piuttosto che trovare il bambino, chiamando qualcosa su di esso che sa di andare al suo genitore.

    
risposta data 22.11.2012 - 04:10
fonte
0

In che modo l'esecuzione è arrivata al punto in cui il bambino decide che vuole essere più importante? È arrivato lì attraverso i genitori? In caso affermativo, è possibile inviare un riferimento al genitore per quel metodo.

ad es. se tutti i nodi hanno una sorta di metodo update () che fa qualcosa di simile

void update() {
    doSomething()
    for(Node n:childs){
        //do something
        n.update();
    }
}

potresti cambiarlo in

void update(Node parent) {
    doSomething(parent)
    for(Node n:childs){
        //do something
        n.update(this);
    }
}
    
risposta data 22.11.2012 - 11:43
fonte
0

Non penso che sia una cattiva idea Puoi risolvere questo problema aggiungendo un valore di ordinamento a ogni bambino. Sto immaginando qualcosa come "z-index" usato per visualizzare oggetti on-top o uno dietro l'altro nelle pagine web.

Non sono sicuro di come codificherai qualcosa di simile, ma il concetto sembra fattibile.

    
risposta data 22.11.2012 - 14:32
fonte

Leggi altre domande sui tag