suchen
HeimJavajavaLernprogrammBeispielanalyse für Java-Entwurfsmuster-Kompositionsmuster

1.Grundlegende Einführung

1) Zusammengesetztes Muster, auch Teil-Ganzes-Muster genannt, erstellt eine Baumstruktur von Objektgruppen und kombiniert Objekte zu einer Baumstruktur, um „Ganzes Teil“ hierarchisch darzustellen Beziehung

2) Der Kombinationsmodus kombiniert Objekte gemäß der Baumstruktur, um die Teil- und Gesamtebene darzustellen

3) Diese Art von Design Das Muster gehört zum Strukturmuster# 🎜🎜#

4) Das Kombinationsmuster ermöglicht Benutzern einen konsistenten Zugriff auf einzelne Objekte und kombinierte Objekte, das heißt: Durch die Kombination können Kunden einzelne Objekte und kombinierte Objekte auf konsistente Weise verarbeiten#🎜🎜 #

2. Struktur

Der Kombinationsmodus umfasst hauptsächlich drei Rollen:

    Abstrakter Wurzelknoten (Komponente): Definiert die allgemeinen Methoden und Eigenschaften jedes Systems Bei hierarchischen Objekten können einige Standardverhalten und -eigenschaften vordefiniert werden Blattknoten bilden eine Baumstruktur
  • Blattknoten (Blatt): Blattknotenobjekt ohne Zweige darunter ist die kleinste Einheit für die Durchquerung auf Systemebene#🎜 🎜#
  • 3. Durch den Kombinationsmodus gelöste Probleme
  • 1) Der Kombinationsmodus löst solche Probleme, wenn das Objekt, das wir verarbeiten möchten, eine Baumformstruktur erzeugen kann , und wenn wir die Knoten und Blätter im Baum bearbeiten möchten, kann dies eine konsistente Methode bereitstellen, unabhängig davon, ob es sich um einen Knoten oder ein Blatt handelt

    2) Das entsprechende Diagramm
  • #🎜 🎜#

4. Kombinationsmodell zur Lösung der Schulabteilungsanzeige

1) Anwendungsbeispielanforderungen

Schreiben Sie ein Programm für Eine Abteilungsstruktur einer Schule anzeigen: Die Abteilungszusammensetzung der Schule sollte auf einer Seite angezeigt werden. Eine Schule hat mehrere Hochschulen und eine Hochschule hat mehrere Abteilungen

Beispielanalyse für Java-Entwurfsmuster-Kompositionsmuster2) Ideenanalyse und Illustration (Klassenbild)

3) Code-Implementierung

Komponenten-Composite-Object-Deklarationsschnittstelle

package com.zte;
public abstract class OrganizationComponent {
    private String name;// 名字
    private String des;// 说明
    public String getName() {
        return name;
    }
    public String getDes() {
        return des;
    }
    protected void add(OrganizationComponent organizationComponent) {
        // 默认实现
        throw new UnsupportedOperationException();
    }
    protected void remove(OrganizationComponent organizationComponent) {
        // 默认实现
        throw new UnsupportedOperationException();
    }
    // 构造器
    public OrganizationComponent(String name, String des) {
        this.name = name;
        this.des = des;
    }
    // 方法print,抽象方法
    protected abstract void print();
}

Zusammengesetzter Nicht-Blatt-Knoten

package com.zte;
import java.util.ArrayList;
import java.util.List;
// University 就是 Composite,可以管理College
public class University extends OrganizationComponent {
    List<OrganizationComponent> organizationComponentList = new ArrayList<>();
    // 构造器
    public University(String name, String des) {
        super(name, des);
    }
    //重写add
    @Override
    protected void add(OrganizationComponent organizationComponent) {
        organizationComponentList.add(organizationComponent);
    }
    // 重写remove
    @Override
    protected void remove(OrganizationComponent organizationComponent) {
        organizationComponent.remove(organizationComponent);
    }
    @Override
    protected void print() {
        System.out.println("==========" + getName() + "=========");
        for (OrganizationComponent organizationComponent : organizationComponentList) {
            organizationComponent.print();
        }
    }
    @Override
    public String getName() {
        return super.getName();
    }
    @Override
    public String getDes() {
        return super.getDes();
    }
}
Beispielanalyse für Java-Entwurfsmuster-KompositionsmusterZusammengesetzter Nicht-Blatt-Knoten

package com.zte;
import java.util.ArrayList;
import java.util.List;
public class College extends OrganizationComponent {
    // list中存放department
    List<OrganizationComponent> organizationComponentList = new ArrayList<>();
    public College(String name, String des) {
        super(name, des);
    }
    //重写add
    @Override
    protected void add(OrganizationComponent organizationComponent) {
        organizationComponentList.add(organizationComponent);
    }
    // 重写remove
    @Override
    protected void remove(OrganizationComponent organizationComponent) {
        organizationComponent.remove(organizationComponent);
    }
    @Override
    protected void print() {
        System.out.println("==========" + getName() + "=========");
        for (OrganizationComponent organizationComponent : organizationComponentList) {
            organizationComponent.print();
        }
    }
    @Override
    public String getName() {
        return super.getName();
    }
    @Override
    public String getDes() {
        return super.getDes();
    }
}

Blatt-Blatt-Knoten

package com.zte;
public class Department extends OrganizationComponent {
    public Department(String name, String des) {
        super(name, des);
    }
    // add和remove方法就不需要再写了
    @Override
    protected void print() {
        System.out.println("===========" + getName() + "=========");
    }
    @Override
    public String getName() {
        return super.getName();
    }
    @Override
    public String getDes() {
        return super.getDes();
    }
}
rrree

5. Hinweise und Details zum Kombinationsmodus#🎜 🎜## 🎜🎜#1) Vereinfachen Sie den Client-Betrieb, ohne den gesamten Teil oder die Knotenblätter zu berücksichtigen.

2) Es verfügt über eine starke Skalierbarkeit, wenn wir die Kombination ändern müssen Objekt, wir müssen nur die interne hierarchische Beziehung anpassen, und der Kunde muss keine Änderungen vornehmen

3) Es ist praktisch, komplexe hierarchische Strukturen zu erstellen, auf die der Kunde nicht achten muss Die Zusammensetzungsdetails in der Kombination, die einfach ist. Fügen Sie Knoten oder Blätter hinzu, um eine komplexe Baumstruktur zu erstellen

4) Wenn Sie die Organisationsstruktur durchlaufen müssen oder das von Ihnen verarbeitete Objekt eine Baumstruktur hat, Es ist sehr gut geeignet, den Kombinationsmodus zu verwenden

5) Wenn es viele Unterschiede zwischen Knoten und Blättern gibt, sind beispielsweise viele Methoden und Attribute unterschiedlich, ist die Verwendung nicht geeignet der Kombinationsmodus

Das obige ist der detaillierte Inhalt vonBeispielanalyse für Java-Entwurfsmuster-Kompositionsmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung