Entwurfsmuster in Java mit Codebeispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten
```html

Entwurfsmuster in Java: Vollständiger Leitfaden mit Beispielen



Entwurfsmuster (design patterns) sind bewährte Lösungen für typische Probleme, die bei der Softwareentwicklung auftreten. In Java sind diese Muster aufgrund des strengen objektorientierten Paradigmas der Sprache besonders gefragt. Die Verwendung von Mustern macht den Code flexibler, wartbarer und skalierbarer.



In diesem Artikel werden wir drei Hauptgruppen von Entwurfsmustern in Java behandeln: Erzeugungsmuster, Strukturmuster und Verhaltensmuster. Jedes Muster wird von einem praktischen Codebeispiel begleitet.



Erzeugungsmuster (Creational Patterns)



Erzeugungsmuster verwalten den Prozess der Objekterstellung und machen das System unabhängig von der Art und Weise, wie sie konstruiert werden. Betrachten wir zwei der beliebtesten Muster: Singleton und Factory Method.



Singleton (Einzelstück)



Singleton stellt sicher, dass von einer Klasse nur eine Instanz existiert, und bietet einen globalen Zugriffspunkt darauf. Dieses Muster wird häufig für Datenbankverbindungen, Protokollierung oder Caching verwendet.



Beispiel einer threadsicheren Singleton-Implementierung in Java:



public class DatabaseConnection {    private static volatile DatabaseConnection instance;    private String connectionString;

private DatabaseConnection(String connectionString) { this.connectionString = connectionString; }

public static DatabaseConnection getInstance(String connectionString) { if (instance == null) { synchronized (DatabaseConnection.class) { if (instance == null) { instance = new DatabaseConnection(connectionString); } } } return instance; }

public void connect() { System.out.println("Verbindung zu " + connectionString); }}


Verwendung:



DatabaseConnection db = DatabaseConnection.getInstance("jdbc:mysql://localhost:3306/mydb");db.connect();


Factory Method (Fabrikmethode)



Factory Method definiert eine Schnittstelle zur Erstellung eines Objekts, ermöglicht es Unterklassen jedoch, den Typ des erstellten Objekts zu ändern. Dies erlaubt es, die Erstellung von Instanzen an untergeordnete Klassen zu delegieren.



Beispiel einer Fabrikmethode zur Erstellung verschiedener Benachrichtigungstypen:



interface Notification {    void send(String message);}

class EmailNotification implements Notification { public void send(String message) { System.out.println("Sende Email: " + message); }}

class SMSNotification implements Notification { public void send(String message) { System.out.println("Sende SMS: " + message); }}

abstract class NotificationFactory { public abstract Notification createNotification();

public void notifyUser(String message) { Notification notification = createNotification(); notification.send(message); }}

class EmailNotificationFactory extends NotificationFactory { public Notification createNotification() { return new EmailNotification(); }}

class SMSNotificationFactory extends NotificationFactory { public Notification createNotification() { return new SMSNotification(); }}


Verwendung:



NotificationFactory factory = new EmailNotificationFactory();factory.notifyUser("Ihre Bestellung wurde bestätigt!");


Strukturmuster (Structural Patterns)



Strukturmuster beschreiben Möglichkeiten, Klassen und Objekte zu größeren Strukturen zusammenzufassen. Betrachten wir das Muster Adapter (Adapter).



Adapter (Adapter)



Adapter ermöglicht es Objekten mit inkompatiblen Schnittstellen, zusammenzuarbeiten. Er kapselt ein Objekt und stellt die vom Client benötigte Schnittstelle bereit.



Beispiel eines Adapters zur Integration eines alten Protokollierungssystems

```

Blogs

Buchempfehlungen