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
2) Ideenanalyse und Illustration (Klassenbild)
3) Code-Implementierung Komponenten-Composite-Object-Deklarationsschnittstellepackage 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(); }
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(); } }
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
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!