Kommentare zu: Hexagonale Architektur mit Java – Tutorial https://www.happycoders.eu/de/software-craftsmanship/hexagonale-architektur-java/ Mon, 05 May 2025 18:58:00 +0000 hourly 1 Von: Sven Woltmann https://www.happycoders.eu/de/software-craftsmanship/hexagonale-architektur-java/#comment-18549 Thu, 06 Jul 2023 14:14:45 +0000 https://www.happycoders.eu/?p=35265#comment-18549 Als Antwort auf Ilias Mertzanidis.

Hallo Ilias,

das ist eine sehr gute Frage.

Du hast Recht, dass in vielen Fällen eine neue Anforderung Änderungen sowohl an der API als auch an Port und Service erfordern.

Die Isolierung hat dennoch einen großen Vorteil:

Durch die Definition der Interfaces bzw. Ports gibt es festgelegte Eintrittspunkte in den Anwendungskern. Wenn die Controller direkt auf die Services zugreifen würden, könnten sie praktisch jede als "public" markierte Methode im Kern aufrufen. Durch die Interfaces werden Aufrufe auf die eigentlichen Servicemethoden beschränkt. Das hilft auch neuen Entwicklern dabei, einen Überblick über die Eintrittspunkte in den Anwendungskern zu gewinnen.

Darüberhinaus machen die Interfaces es einfach, durch Tools (wie im Beispiel durch ArchUnit) sicherzustellen, dass die Architekturregeln eingehalten werden.

Viele Grüße
Sven

]]>
Von: Ilias Mertzanidis https://www.happycoders.eu/de/software-craftsmanship/hexagonale-architektur-java/#comment-18544 Wed, 05 Jul 2023 06:33:41 +0000 https://www.happycoders.eu/?p=35265#comment-18544 Hi Sven,

deine Artikel ist super.
Allerdings habe ich eine konkrete Frage.

Nehmen wir an den Fall AddToCartController -> AddToCartUseCase -> AddToCartService.

Warum stellt das Design mit den Ports Adapters an der Stelle sicher, dass der Domain (an der Fall AddToCartService), praktisch isoliert bleibt?

Falls der Rest Endpunkt wegen einer neuen Anforderung sich ändert, würde das nicht bedeuten, dass auch das Interface AddToCartUseCase und die Service AddToCartService angepasst werden müssen?

Das ist eine generelle Frage von mir wegen Hexagonale Architektur und bezieht sich nicht direkt auf deine Implementierung.

Was wäre praktisch der Unterschied wenn AddToCartController direkt AddToCartService aufrufen würde?

]]>