-
Notifications
You must be signed in to change notification settings - Fork 0
Clean Architecture
Das Minecraft-Smarthome wurde mittels der Clean Architecture in Module unterteilt. Seine Aufgabe ist es, einen Minecraft-Server zu einem Smarthome-System zu machen, und über das Netzwerk mit dem Smarthome-Connector zu kommunizieren. Dabei ergeben sich zwei offensichtliche Abängigkeiten, nämlich die Netzwerk-Kommunikation und die Interaktion mit dem Minecraft-Server. Natürlich gibt es hier inhärente Abhängigkeiten, die auch durch Nutzung der Clean Architecture nicht verhindert werden. Es wurde jedoch versucht, diese auf ein Minimum zu beschränken. Dazu wurde herausgearbeitet, welche Eigenschaften von Minecraft notwendig sind, um darin ein Smarthome-System umzusetzen. Jedes Software-System, das diese Eigenschaften besitzt, kann somit ohne Änderung des Applikations-Codes Minecraft ersetzen. Auch die Abhängigkeit auf unseren Smarthome-Connector ist vorgesehen. Da dieser ebenfalls von uns entwickelt wurde, ist ein Austausch hier nicht vorgesehen. Trotzdem wurde die Schnittstelle zwischen beiden zur Erleichterung von potentiellen späteren Änderungen minimal gehalten. Die Verwendung einer Rest-API wurde vollständig von der Applikationslogik entkoppelt. Die Rest-API könnte also nur durch Änderung ihres Plugins und Adapters durch beispielsweise grpc, Pipes, Shared Memory oder direkte Java-Aufrufe ersetzt werden.
Die "Module" sind hierbei sowohl Java-Module als auch Maven-Module. Die "Richtung" der Dependencies wird daher auch durch den Compiler durchgesetzt. Nur die Plugins, und nicht die Adapter oder der Applikations-Code, haben Zugriff auf die jeweiligen verwendeten Libraries, wie die Minecraft-Server-API "Paper", die wir verwenden.