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 #🎜 🎜#
2) Ideenanalyse und Illustration (Klassenbild)
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(); } }

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!

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.

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.

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

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]

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


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

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
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung