Simple Command Framework – Einführung
Dieser Artikel gibt eine Einführung in das Simple Command Framework. Es ist der Beginn einer Reihe von Artikeln. Seperation of Concerns ist das A und O der Software-Entwicklung. Es geht im Prinzip immer darum zu schneiden: Auf Layer-Ebene, auf Komponenten-Ebene, auf Klassen-Ebene und auf Methoden-Ebene. Das Ziel ist immer Vereinfachung und aus meiner Sicht Testbarkeit. Wenn ich ein Softwareteil einfach und unabhängig testen kann, alle Eventualitäten im Junit Test abklären kann, dann brauche ich immer nur einen einzigen Intgrationstest, der den grünen Pfad testet und ich bin fertig.
Verhaltensmuster sind die Lösung um Software zu schneiden: Strategy-, Command-, Chain of Responsibility Pattern. Das sind meine Favoriten. Das Simple Command Framework implementiert diese Entwurfsmuster, so dass man ganz schnell anfangen kann zu Programmieren. Das Mantra des Frameworks ist: Everything is a Command! Und so steht das Command-Interface auch im Fokus. Es hat nur eine einzige Methode.
public interface Command <T extends ParameterObject> { /** * Executes the command. * * @param context */ void execute(T context) throws CommandException; } }
Mit diesem Interface wird jetzt ein ganzes System von Command-Objekten aufgebaut. Das spannende ist: Alle Objekte verhalten sich gleich. Der Aufruf der execute Methode startet die Abarbeitung der Business Logik. So gibt es:
- Command Container, in denen Commands zusammengefasst werden.
- Chains, die selbstständig entscheiden, ob ein Problem bereits gelöst ist oder weitere Kettenglieder aufgerufen werden müssen.
- Strategien, die mit Hilfe von Dependency Injection in Klassen injeziert werden können.
- Prozesse, die über XML konfiguriert werden können.
- Builder, die Container aufbauen entweder aus einer Spring Konfiguration oder aus einer XML Konfiguration
- … es gibt keine Grenzen.
Ziel dieser Reihe ist es Stück für Stück das Framework vorzustellen. Folgende Posts sind geplant:
- Simple Command Framework – Einführung in die Architektur
- Simple Command Framework – Command Container
- Simple Command Framework – Commands als Strategien
- Simple Command Framework – Chain of Responsibility
- Simple Command Framework – Commands als Teil von Prozessketten
- Simple Command Framework – Command Builder
Frickelt Ihr noch oder schneidet Ihr schon?
Thank God! Somenoe with brains speaks!