Heim  >  Artikel  >  Java  >  Beispielanalyse für Java-Entwurfsmuster-Kompositionsmuster

Beispielanalyse für Java-Entwurfsmuster-Kompositionsmuster

PHPz
PHPznach vorne
2023-05-05 20:28:051330Durchsuche

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:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen