Effizientere Anwendungsentwicklung durch Software Design Patterns

12.06.2015

Software Design PatternHäufig stehen wir Software Architekten vor gleichen oder ähnlichen Herausforderungen, die es im Arbeitsalltag möglichst effizient zu meistern gilt. Neben den gängigen Entwicklungswerkzeugen können Software Design Patterns für viele Standard-Probleme eine Standard-Lösung anbieten, die, wenn man sie korrekt einsetzt, eine Menge Code ersparen und die Anwendung wesentlich testbarerer gestalten.

So ist beispielsweise die Verwendung des Factory Patterns bei der Instanziierung der Datenbanktreiber-Komponente hilfreich, wenn man für die Komponenten-Tests eine Inmemory-Datenbank statt einer richtigen Datenbank verwenden möchte. Außerdem kapselt es die Erzeugung der Datenbankverbindung transparent und einfach wiederverwendbar in wenige Aufrufe, sodass diese in den verschiedenen Bereichen der Anwendung aufgerufen werden können.

import org.hibernate.SessionFactory;
public class DatabaseFactory {
public static SessionFactory getDatabaseFactory(DatabaseType type) {
SessionFactory returnVal;
switch (type) {
case INMEMORY:
returnVal = H2Utils.getSessionFactory();
break;
default:
case REAL:
returnVal = HibernateUtils.getSessionFactory();
break;
}
return returnVal;
}
}

Dank Design Patterns Datenbanktests effizienter durchführen

Verwendet man dieses Beispiel nun in einem Test, kann durch Übergeben des Typs DatabaseType.INMEMORY dort eine SessionFactory für eine Inmemroy-Datenbank initialisiert und in einem produktiven Einsatz durch die Verwendung des Typs DatabaseType.REAL auf eine „echte“ Datenbank zurückgegriffen werden. Die zu verwendende Datenbank ist vom restlichen Code abkapselt und die Tests müssen nicht auf einer echten Datenbank ausgeführt werden. Der Vorteil: Die Qualität der Software wird erhöht, weil auch datenbankabhängige Operationen getestet werden können. Gleichzeitig sinkt der Aufwand für die Erstellung der Tests, da initial nur ein „Schalter“ auf die Inmemory Datenbank gelegt werden muss, anstatt mühselig Einzelkomponenten zu testen.
Hier [1] sind weitere Code Beispiele zu finden, die die diversen Design Patterns für die Java-Welt anhand von praktischen Beispielen erläutern.

Unterscheidung von Design Patterns

Die Entwurfsmuster unterscheiden sich generell in drei Kategorien:

• Verhaltensmuster: Sind Muster, die bei der Modellierung von komplexen Verhalten unterstützen (z.B.: State Pattern, Observer Pattern, Strategy Pattern).
• Erzeugungsmuster: Sind Muster, die bei der Erzeugung von konkreten Objekten unterstützen. Diese Kapseln die Erzeugung von der konkreten Implementierung ab (z.B.: Factory Pattern, Singleton, Builder Pattern).
• Strukturmuster: Sind Muster, die bei der Strukturierung von Beziehungen unterstützen (z.B.: Model-View-Controller Pattern, Adapter Pattern, Decorator Pattern).
Für eine sichtbare Professionalität und Qualität bei der Softwareentwicklung, kann es hilfreich sein, diese und viele weitere Design Pattern beim Lösen von Herausforderungen zur Hilfe zu nehmen und rechtzeitig in der Anwendungsarchitektur zu berücksichtigen.

Die Verwendung von Software Design Patterns erhöht außerdem wesentlich die Code-Lesbarkeit, da der Entwickler gezwungen wird, sich an gewisse, wiederkehrende Muster zu halten. Von anderen Entwicklern werden diese Muster besser erkannt und der Programmcode hierdurch schneller verstanden.


Quellen:
[1] https://github.com/bethrobson/Head-First-Design-Patterns

 

doubleSlash-Teaser-Blog_Programmierung

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*