Il pattern di progettazione Composite ci consente di chiamare un operation()
su un nodo 'composito' in una struttura ad albero, e questo operation()
verrà chiamato su tutti i figli, i subchildren e così via.
Quando viene invocato operation()
di un elemento, è responsabilità chiamare operation()
su tutti i suoi figli, e così via. Ogni bambino responsabile di invocare l'operazione sui propri figli diretti.
Capisco perché questo ha una natura ricorsiva . Quando impariamo questo disegno, la parola "ricorsione" è sempre nelle nostre teste.
Ma può essere considerato un "comportamento ricorsivo" nel senso stretto della parola?
Ho sempre pensato che la ricorsione significasse semplicemente un processo in cui 'una funzione si chiama'. ('funzione' o 'metodo' o 'procedura' ecc.)
Tuttavia, nel modello di progettazione Composite, nessun metodo chiama se stesso. Un metodo chiama il metodo con nome identico negli oggetti composti con esso (che servono come "figli") - ma non chiama mai stesso (aka void operation(){ this.operation(); }
non succede mai).
Quindi, il modello di progettazione Composite crea un comportamento ricorsivo ? O crea un comportamento simile alla natura della ricorsione ? La mia definizione di ricorsione è errata perché è troppo rigida? In tal caso, come definiresti la ricorsione?