Die Kunst der Entkopplung: Das Bridge Design Pattern in Java

Entdecken Sie das Bridge Design Pattern in Java, eine Methode, um Abstraktionen und Implementierungen effizient zu entkoppeln. Erfahren Sie, wie Sie Designflexibilität durch Komposition statt Vererbung erreichen. Ideal für Entwickler, die saubere, wartbare und erweiterbare Codebasen gestalten möchten.

Was ist das Bridge Design Pattern?

Das Bridge Design Pattern folgt dem Grundsatz, die Komposition der Vererbung vorzuziehen. Es ermöglicht eine flexible Struktur, in der sowohl die Abstraktion als auch die Implementierung unabhängig voneinander erweitert werden können.

Beispiel des Bridge Design Patterns in Java

Um das Bridge Design Pattern besser zu verstehen, betrachten wir ein Beispiel mit Schnittstellenhierarchien sowohl für Schnittstellen als auch für Implementierungen. Die Implementierung des Bridge Design Patterns erfolgt durch die Verwendung von Komposition, wie im folgenden Java-Code dargestellt:

 
package com.journaldev.design.bridge;

public interface Color {
    void applyColor();
}

package com.journaldev.design.bridge;

public abstract class Shape {
    protected Color color;
    
    public Shape(Color c){
        this.color = c;
    }
    
    abstract public void applyColor();
}

Für die konkreten Implementierungsklassen wie Triangle und Pentagon sieht der Code wie folgt aus:

 
package com.journaldev.design.bridge;

public class Triangle extends Shape {

    public Triangle(Color c) {
        super(c);
    }

    @Override
    public void applyColor() {
        System.out.print("Triangle filled with color ");
        color.applyColor();
    } 

}

package com.journaldev.design.bridge;

public class Pentagon extends Shape {

    public Pentagon(Color c) {
        super(c);
    }

    @Override
    public void applyColor() {
        System.out.print("Pentagon filled with color ");
        color.applyColor();
    } 

}

Die Implementierungsklassen für RedColor und GreenColor sehen wie folgt aus:

 
package com.journaldev.design.bridge;

public class RedColor implements Color{

    public void applyColor(){
        System.out.println("red.");
    }
}

package com.journaldev.design.bridge;

public class GreenColor implements Color{

    public void applyColor(){
        System.out.println("green.");
    }
}

Ein Testprogramm zeigt die Anwendung des Bridge Pattern:

 
package com.journaldev.design.test;

import com.journaldev.design.bridge.GreenColor;
import com.journaldev.design.bridge.Pentagon;
import com.journaldev.design.bridge.RedColor;
import com.journaldev.design.bridge.Shape;
import com.journaldev.design.bridge.Triangle;

public class BridgePatternTest {

    public static void main(String[] args) {
        Shape tri = new Triangle(new RedColor());
        tri.applyColor();
        
        Shape pent = new Pentagon(new GreenColor());
        pent.applyColor();
    }

}

Die Ausgabe dieses Testprogramms demonstriert die Funktionalität des Bridge Pattern:

 

Triangle filled with color red.
Pentagon filled with color green.

Das Bridge Design Pattern ist besonders nützlich, wenn sowohl die Abstraktion als auch die Implementierung unabhängige Hierarchien haben können und die Implementierungsdetails vor der Client-Anwendung verborgen werden sollen. Es fördert eine saubere Trennung von Verantwortlichkeiten und erleichtert die Wartung und Erweiterung des Codes.

Das könnte Sie auch interessieren

Java-Designmuster: Die Funktionsweise des Chain of Responsibility Patterns

Tiefensuche und Breitensuche: Navigieren von Binärbäumen in Java

Effektives Routing in AngularJS: Ein umfassendes Beispiel mit ngRoute und $routeProvider

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren:

centron Managed Cloud Hosting in Deutschland

Java-Array: So prüfst du Werte effizient

JavaScript
Wie prüft man, ob ein Java Array einen Wert enthält? Es gibt viele Möglichkeiten, um zu überprüfen, ob ein Java Array einen bestimmten Wert enthält. Einfache Iteration mit einer for-Schleife…