Tutorials  /  JavaScript

Komplexe Systeme mit dem Facade Design Pattern in Java vereinfachen

Ccentron Redaktion · November 2024 ·3 Min. Lesezeit ·JavaScript, Tutorial

Das Facade Design Pattern, ein Teil der strukturellen Design Patterns, bietet eine elegante Möglichkeit, Interaktionen mit komplexen Subsystemen zu vereinfachen. Durch die Einführung einer einheitlichen Schnittstelle werden Client-Anwendungen übersichtlicher und weniger fehleranfällig, insbesondere in komplexen Projekten.

Was ist das Facade Design Pattern?

Das Facade Design Pattern, wie es von der Gang of Four (GoF) definiert wurde, bietet eine einheitliche Schnittstelle für eine Menge von Schnittstellen in einem Subsystem. Es definiert eine höherstufige Schnittstelle, die die Nutzung des Subsystems vereinfacht. Stellen Sie sich ein Szenario vor, in dem Sie mit mehreren Subsystemen interagieren müssen, wie z. B. das Herstellen einer Verbindung zu Datenbanken (MySQL oder Oracle) und das Generieren von Berichten (HTML, PDF). Während jedes Subsystem seine eigene Schnittstelle bereitstellt, muss die Client-Anwendung diese einzeln handhaben, was zu redundanter Komplexität führt. Das Facade Design Pattern bietet eine Lösung, indem es diese Schnittstellen in einer einzigen, benutzerfreundlicheren Schnittstelle zusammenfasst.

VM

Passende Infrastruktur bei centron

Node-Anwendungen wollen deployt werden: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat – oder gleich als Managed Server, wenn der Betrieb nicht bei Ihnen liegen soll. Cloud Server mieten →

Beispiel: Berichte mit einer Facade generieren

Um dies zu veranschaulichen, betrachten wir ein Beispiel zur Generierung von Datenbankberichten mithilfe einer Facade.

Zwei Hilfsklassen, MySqlHelper und OracleHelper, kapseln datenbankspezifische Operationen. Nachfolgend finden Sie die Implementierung der Hilfsklassen:

Go
package com.example.design.facade;

import java.sql.Connection;

public class MySqlHelper {
    public static Connection getMySqlDBConnection() {
        // Gibt die MySQL-Datenbankverbindung zurück
        return null;
    }

    public void generateMySqlPDFReport(String tableName, Connection con) {
        // Generiert einen PDF-Bericht für MySQL
    }

    public void generateMySqlHTMLReport(String tableName, Connection con) {
        // Generiert einen HTML-Bericht für MySQL
    }
}
Go
package com.example.design.facade;

import java.sql.Connection;

public class OracleHelper {
    public static Connection getOracleDBConnection() {
        // Gibt die Oracle-Datenbankverbindung zurück
        return null;
    }

    public void generateOraclePDFReport(String tableName, Connection con) {
        // Generiert einen PDF-Bericht für Oracle
    }

    public void generateOracleHTMLReport(String tableName, Connection con) {
        // Generiert einen HTML-Bericht für Oracle
    }
}

Verwendung einer Facade-Schnittstelle

Die HelperFacade-Klasse fungiert als zentrale Schnittstelle, die die Komplexität der Interaktion mit mehreren Hilfsklassen abstrahiert. Sie verwendet Enums für eine bessere Typensicherheit. Hier ist die Implementierung:

Go
package com.example.design.facade;

import java.sql.Connection;

public class HelperFacade {
    public static void generateReport(DBTypes dbType, ReportTypes reportType, String tableName) {
        Connection con = null;
        switch (dbType) {
            case MYSQL:
                con = MySqlHelper.getMySqlDBConnection();
                MySqlHelper mySqlHelper = new MySqlHelper();
                if (reportType == ReportTypes.HTML) {
                    mySqlHelper.generateMySqlHTMLReport(tableName, con);
                } else {
                    mySqlHelper.generateMySqlPDFReport(tableName, con);
                }
                break;

            case ORACLE:
                con = OracleHelper.getOracleDBConnection();
                OracleHelper oracleHelper = new OracleHelper();
                if (reportType == ReportTypes.HTML) {
                    oracleHelper.generateOracleHTMLReport(tableName, con);
                } else {
                    oracleHelper.generateOraclePDFReport(tableName, con);
                }
                break;
        }
    }

    public enum DBTypes {
        MYSQL, ORACLE
    }

    public enum ReportTypes {
        HTML, PDF
    }
}

Verwendung der Facade in einer Client-Anwendung

Hier sehen Sie, wie die Client-Anwendung die Facade verwenden kann, um Berichte zu generieren. Der folgende Code zeigt sowohl den traditionellen Ansatz als auch die vereinfachte Methode mit dem Facade Design Pattern:

Go
package com.example.design.test;

public class FacadePatternTest {
    public static void main(String[] args) {
        String tableName = "Employee";

        // Ohne Facade
        Connection con = MySqlHelper.getMySqlDBConnection();
        MySqlHelper mySqlHelper = new MySqlHelper();
        mySqlHelper.generateMySqlHTMLReport(tableName, con);

        Connection con1 = OracleHelper.getOracleDBConnection();
        OracleHelper oracleHelper = new OracleHelper();
        oracleHelper.generateOraclePDFReport(tableName, con1);

        // Mit Facade
        HelperFacade.generateReport(HelperFacade.DBTypes.MYSQL, HelperFacade.ReportTypes.HTML, tableName);
        HelperFacade.generateReport(HelperFacade.DBTypes.ORACLE, HelperFacade.ReportTypes.PDF, tableName);
    }
}

Fazit

Wie Sie sehen, wird der Client-Code durch die Verwendung des Facade Patterns erheblich übersichtlicher und leichter zu verwalten. Das Facade Design Pattern bietet eine vereinfachte Schnittstelle zu komplexen Subsystemen, ohne deren zugrunde liegende Struktur zu verändern. Es ist besonders nützlich, wenn es um mehrere Schnittstellen geht, die ähnliche Aufgaben ausführen. Die Anwendung des Patterns reduziert die Komplexität auf der Client-Seite und verbessert die Lesbarkeit des Codes. Bei Systemen mit zunehmender Komplexität kann die Einführung des Facade Design Patterns zu besserer Wartbarkeit und Skalierbarkeit führen.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie JavaScript
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren