Espandendo la risposta di Kilian Foth, questa direzione di stratificazione corrisponde a una direzione in cui un umano esplora un sistema.
Immagina di essere un nuovo sviluppatore incaricato di correggere un bug nel sistema a più livelli.
I bug di solito sono una discrepanza tra ciò di cui il cliente ha bisogno e ciò che ottiene. Mentre il cliente comunica con il sistema tramite l'interfaccia utente e ottiene risultati tramite l'interfaccia utente (l'interfaccia utente significa letteralmente "interfaccia utente"), anche i bug vengono segnalati in termini di interfaccia utente. Quindi, come sviluppatore, non hai molta scelta ma iniziare a guardare anche l'interfaccia utente, per capire cosa è successo.
Ecco perché è necessario disporre di connessioni di livello top-down. Ora, perché non abbiamo connessioni che vanno in entrambe le direzioni?
Bene, hai tre scenari su come potrebbe mai verificarsi quel bug.
Potrebbe verificarsi nel codice UI stesso e quindi essere localizzato lì. È facile, devi solo trovare un posto e ripararlo.
Potrebbe verificarsi in altre parti del sistema a seguito di chiamate effettuate dall'interfaccia utente. Il che è moderatamente difficile, traccia un albero di chiamate, trova un posto in cui si verifica l'errore e lo risolvi.
E potrebbe verificarsi a seguito di una chiamata INTO al tuo codice UI. Il che è difficile, devi prendere la chiamata, trovare la sua fonte, quindi capire dove si verifica l'errore. Considerando che un punto in cui si inizia si trova in profondità in un singolo ramo di un albero delle chiamate, E prima è necessario trovare un albero delle chiamate corretto, potrebbero esserci diverse chiamate nel codice dell'interfaccia utente, è necessario ritagliare il debug per te.
Per eliminare il più possibile il caso più difficile, le dipendenze circolari sono fortemente scoraggiate, gli strati si collegano principalmente in modo discendente. Anche quando è necessaria una connessione dall'altra parte, di solito è limitata e chiaramente definita. Ad esempio, anche con i callback, che sono una sorta di connessione inversa, il codice chiamato in callback di solito fornisce questo callback in primo luogo, implementando una sorta di "opt-in" per le connessioni inverse e limitando il loro impatto sulla comprensione di un sistema.
La stratificazione è uno strumento e principalmente rivolta agli sviluppatori che supportano un sistema esistente. Bene, anche le connessioni tra i livelli lo riflettono.