En développant la réponse de Kilian Foth, cette direction de superposition correspond à une direction dans laquelle un humain explore un système.
Imaginez que vous soyez un nouveau développeur chargé de corriger un bogue dans le système en couches.
Les bugs sont généralement une inadéquation entre les besoins du client et ses avantages. Lorsque le client communique avec le système via l'interface utilisateur et obtient le résultat via l'interface utilisateur (l'interface utilisateur signifie littéralement 'interface utilisateur'), les bogues sont également signalés en termes d'interface utilisateur. Ainsi, en tant que développeur, vous n'avez pas beaucoup d'autre choix que de commencer à regarder également l'interface utilisateur pour comprendre ce qui s'est passé.
C'est pourquoi il est nécessaire d'avoir des connexions de couche descendante. Maintenant, pourquoi n'avons-nous pas de relations qui vont dans les deux sens?
Eh bien, vous avez trois scénarios pour lesquels ce bogue pourrait se produire.
Cela pourrait se produire dans le code de l'interface utilisateur elle-même, et donc y être localisé. C'est facile, il vous suffit de trouver une place et de la réparer.
Cela pourrait se produire dans d'autres parties du système à la suite d'appels effectués à partir de l'interface utilisateur. Ce qui est modérément difficile, vous tracez un arbre d'appels, trouvez un endroit où l'erreur se produit et le corrigez.
Et cela pourrait se produire à la suite d'un appel DANS votre code d'interface utilisateur. Ce qui est difficile, vous devez intercepter l'appel, trouver sa source, puis déterminer où l'erreur se produit. Étant donné qu'un point où vous commencez est situé au plus profond d'une branche d'un arbre d'appels ET que vous devez d'abord trouver un arbre d'appels correct, il peut y avoir plusieurs appels dans le code de l'interface utilisateur. Votre débogage est alors conçu pour vous.
Pour éliminer autant que possible les cas les plus difficiles, les dépendances circulaires sont fortement déconseillées, les couches se connectant généralement de manière descendante. Même lorsqu'une connexion est nécessaire, elle est généralement limitée et clairement définie. Par exemple, même avec les callbacks, qui sont une sorte de connexion inversée, le code appelé dans callback fournit généralement ce rappel en premier lieu, mettant en œuvre une sorte de "opt-in" pour les connexions inversées, et limitant leur impact sur la compréhension d'un système.
La superposition est un outil principalement destiné aux développeurs prenant en charge un système existant. Eh bien, les connexions entre les couches reflètent cela aussi.