24 Design Patterns mit Codebeispielen

24.1 Singleton

Erlaubt genau eine Instanz einer Klasse.

singleton
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

24.2 Factory Method

Definiert eine Schnittstelle zur Erzeugung eines Objekts.

factory
interface Factory {
    Product create();
}

class ConcreteFactory implements Factory {
    public Product create() {
        return new ConcreteProduct();
    }
}

24.3 Observer

Ein Subject benachrichtigt alle registrierten Observer über Änderungen.

interface Observer {
    void update();
}

class ConcreteObserver implements Observer {
    public void update() {
        // Aktualisierung
    }
}

24.4 Strategy

Definiert eine Familie von Algorithmen.

strategy
interface Strategy {
    void algorithm();
}

class ConcreteStrategyA implements Strategy {
    public void algorithm() {
        // Algorithmus A
    }
}

24.5 Bridge

Entkoppelt eine Abstraktion von ihrer Implementierung.

bridge
// Abstraktion
interface Shape {
    void draw();
}

// Implementierung
interface DrawingAPI {
    void drawCircle();
}

class Circle implements Shape {
    private DrawingAPI api;

    public Circle(DrawingAPI api) {
        this.api = api;
    }

    public void draw() {
        api.drawCircle();
    }
}

class DrawingAPI1 implements DrawingAPI {
    public void drawCircle() {
        // Implementierung 1
    }
}

24.6 Command

Kapselt eine Anforderung als Objekt.

command
interface Command {
    void execute();
}

class ConcreteCommand implements Command {
    private Receiver receiver;

    public ConcreteCommand(Receiver receiver) {
        this.receiver = receiver;
    }

    public void execute() {
        receiver.action();
    }
}

Design Patterns sind wiederverwendbare Lösungen für gemeinsame Probleme in der Software-Entwicklung. Durch die Verwendung von Design Patterns kann der Code flexibler, wartbarer und verständlicher gestaltet werden. Sie dienen als Vorlagen, die in verschiedenen Kontexten angepasst werden können.