In Anlehnung an Kilian Foths Antwort entspricht diese Schichtungsrichtung einer Richtung, in der ein Mensch ein System erforscht.
Stellen Sie sich vor, Sie sind ein neuer Entwickler, der einen Fehler im geschichteten System beheben soll.
Bugs sind normalerweise ein Missverhältnis zwischen dem, was der Kunde braucht und dem, was er bekommt. Da der Kunde über die Benutzeroberfläche mit dem System kommuniziert und über die Benutzeroberfläche ein Ergebnis erhält (UI bedeutet wörtlich „Benutzeroberfläche“), werden die Fehler auch in Bezug auf die Benutzeroberfläche gemeldet. Als Entwickler haben Sie also keine andere Wahl, als sich auch die Benutzeroberfläche anzuschauen, um herauszufinden, was passiert ist.
Aus diesem Grund sind Verbindungen von oben nach unten erforderlich. Warum haben wir keine Verbindungen in beide Richtungen?
Nun, Sie haben drei Szenarien, in denen dieser Fehler jemals auftreten könnte.
Es könnte im UI-Code selbst vorkommen und dort lokalisiert werden. Dies ist einfach, Sie müssen nur einen Platz finden und ihn reparieren.
Dies kann in anderen Teilen des Systems aufgrund von Aufrufen über die Benutzeroberfläche auftreten. Was mäßig schwierig ist, Sie verfolgen einen Baum von Anrufen, finden einen Ort, an dem der Fehler auftritt, und beheben ihn.
Und es könnte als Ergebnis eines Aufrufs Ihres UI-Codes auftreten. Was schwierig ist, Sie müssen den Anruf abfangen, seine Quelle finden und dann herausfinden, wo der Fehler auftritt. Angenommen, ein Punkt, an dem Sie beginnen, befindet sich tief unten in einem einzelnen Zweig eines Anrufbaums, UND Sie müssen erst einen korrekten Anrufbaum finden. Möglicherweise gibt es mehrere Aufrufe im UI-Code. Das Debuggen ist für Sie ausgeschnitten.
Um den schwierigsten Fall so weit wie möglich zu beseitigen, wird von den kreisförmigen Abhängigkeiten dringend abgeraten. Die Schichten werden meist von oben nach unten verbunden. Auch wenn eine Verbindung in die andere Richtung benötigt wird, ist sie in der Regel begrenzt und klar definiert. Selbst bei Rückrufen, bei denen es sich um eine Art umgekehrte Verbindung handelt, stellt der Code, der beim Rückruf aufgerufen wird, diesen Rückruf in der Regel an erster Stelle bereit, indem eine Art "Opt-In" für umgekehrte Verbindungen implementiert und deren Auswirkungen auf das Verständnis von a begrenzt werden System.
Layering ist ein Tool und richtet sich in erster Linie an Entwickler, die ein vorhandenes System unterstützen. Nun, Verbindungen zwischen Schichten spiegeln auch dies wider.