„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Designmuster in Java mit Beispielen

Designmuster in Java mit Beispielen

Veröffentlicht am 09.11.2024
Durchsuche:380

Design Patterns in Java with examples

Was sind Designmuster in Java?

Entwurfsmuster sind wiederverwendbare Lösungen für häufige Probleme beim Softwaredesign. Sie stellen Best Practices dar, die auf verschiedene Situationen in der Softwareentwicklung angewendet werden können, insbesondere in der objektorientierten Programmierung wie Java.

Arten von Designmustern

  • Erstellungsmuster: Behandelt Mechanismen zur Objekterstellung.
  • Strukturmuster: Beschäftigt sich mit der Zusammensetzung von Klassen und Objekten.
  • Verhaltensmuster: Konzentrieren Sie sich auf die Kommunikation zwischen Objekten.

Verwendung von Designmustern

  • Fördern Sie die Wiederverwendbarkeit von Code.
  • Verbessern Sie die Lesbarkeit und Wartbarkeit des Codes.
  • Erleichtern Sie die Kommunikation zwischen Entwicklern.

Beispiele für Designmuster

1. Singleton-Muster

    public class Singleton {
        private static Singleton instance;

        private Singleton() {}

        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
Vorteile:
  • Kontrollierter Zugriff auf eine einzelne Instanz.
  • Spart Speicher, indem mehrere Instanzen verhindert werden.
Nachteile:
  • Aufgrund des globalen Status schwierig zu testen.
  • Kann zu einer engen Kopplung führen.

2. Beobachtermuster

    import java.util.ArrayList;
    import java.util.List;

    interface Observer {
        void update(String message);
    }

    class Subject {
        private List observers = new ArrayList();

        public void addObserver(Observer observer) {
            observers.add(observer);
        }

        public void notifyObservers(String message) {
            for (Observer observer : observers) {
                observer.update(message);
            }
        }
    }
Vorteile:
  • Fördert die lockere Kopplung zwischen Subjekt und Beobachtern.
  • Leicht erweiterbar mit neuen Beobachtern.
Nachteile:
  • Schlechte Leistung, wenn viele Beobachter vorhanden sind.
  • Aufgrund der indirekten Kommunikation schwierig zu debuggen.

3. Builder-Muster

    class Product {
        private String part1;
        private String part2;

        public void setPart1(String part1) { this.part1 = part1; }
        public void setPart2(String part2) { this.part2 = part2; }
    }

    class Builder {
        private Product product = new Product();

        public Builder buildPart1(String part1) {
            product.setPart1(part1);
            return this;
        }

        public Builder buildPart2(String part2) {
            product.setPart2(part2);
            return this;
        }

        public Product build() {
            return product;
        }
    }
Vorteile:
  • Vereinfacht die Erstellung komplexer Objekte.
  • Macht den Code lesbarer und wartbarer.
Nachteile:
  • Erhöht die Komplexität durch mehrere Builder-Klassen.
  • Kann für einfache Objekte übertrieben sein.

4. Fabrikmuster

    interface Shape {
       void draw();
    }

    class Circle implements Shape {
       public void draw() { System.out.println("Drawing a Circle"); }
    }

    class Rectangle implements Shape {
       public void draw() { System.out.println("Drawing a Rectangle"); }
    }

    class ShapeFactory {
       public Shape getShape(String shapeType) {
          if (shapeType == null) return null;
          if (shapeType.equalsIgnoreCase("CIRCLE")) return new Circle();
          if (shapeType.equalsIgnoreCase("RECTANGLE")) return new Rectangle();
          return null;
       }
    }
Vorteile:
  • Kapselt die Objekterstellungslogik.
  • Leicht erweiterbar für neue Formen, ohne vorhandenen Code zu ändern.
Nachteile:
  • Fügt zusätzliche Klassen hinzu, die die Komplexität erhöhen können.
  • Bei unsachgemäßer Verwendung kann es zu einer Verbreitung von Factory-Klassen kommen.

Die Viererbande (GoF)

Die „Gang of Four“ bezieht sich auf die Autoren des einflussreichen Buches mit dem Titel „Design Patterns: Elements of Reusable Object-Oriented Software“. Die Autoren – Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides – stellten 23 klassische Entwurfsmuster vor, die zu einer Grundlage für die Softwareentwicklung geworden sind.

Abschluss

Entwurfsmuster sind wesentliche Werkzeuge in der Java-Programmierung, die Entwicklern helfen, robuste und wartbare Systeme zu erstellen. Das Verständnis ihrer Einsatzmöglichkeiten, Vor- und Nachteile ist für ein effektives Softwaredesign von entscheidender Bedeutung. Die Beiträge der Viererbande bieten eine solide Grundlage für die effektive Anwendung dieser Muster.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/codegreen/design-patterns-in-java-with-examples-1klg?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3