Überblick
Es ist ein strukturelles Muster, das Objekte in einer Baumstruktur organisiert, um eine "partielle" Hierarchie darzustellen, wodurch der Client bei der Verwendung einzelner Objekte und kombinierten Objekte einzigartig wird.
UML -Klassendiagramm
Das obige Klassendiagramm enthält die Rollen:
Komponente: Deklarieren Sie eine gemeinsame Schnittstelle für das an der Komposition beteiligte Objekt, unabhängig davon, ob es sich um eine Kombination oder ein Blattknoten handelt.
Blatt: repräsentiert ein Blattknotenobjekt in der Kombination, und der Blattknoten hat keine untergeordneten Knoten.
Composite: Repräsentiert das Objekt mit untergeordneten Objekten, die an der Kombination beteiligt sind und das Verhalten der Zweigkonstruktion verleiht.
Codebeispiel
import Java.util.ArrayList; Import Java.util.List; Abstract -Klassenkomponente {Protected String Name; public component (String name) {this.name = name; } public abstract void add (Komponente C); öffentliche abstrakte Leere Entfernung (Komponente C); public abstract void getChild (int tiefe);} class Leaf erweitert die Komponente {public Leaf (String -Name) {Super (Name); } @Override public void add (Komponente c) {System.out.println ("kann nicht zu einem Blatt hinzufügen"); } @Override public void entfernen (Komponente c) {System.out.println ("kann nicht aus einem Blatt entfernen"); } @Override public void getChild (int tiefe) {String temp = ""; für (int i = 0; i <tiefe; i ++) {temp+= "-"; System.out.println (temp + name); }}} class Composite erweitert die Komponente {private list <component> childhes = new ArrayList <> (); public Composite (String -Name) {Super (Name); } @Override public void add (Komponente c) {Kinder.Add (c); } @Override public void remove (Komponente c) {children.remove (c); } @Override public void getChild (int tiefe) {für (Komponente C: Kinder) {C.Getchild (Tiefe); }}} public class main {public static void main (String args []) {Composite root = new Composite ("root"); root.add (neues Blatt ("Blatt a")); root.add (neues Blatt ("Blatt B")); Composite Compx = New Composite ("Composite x"); compx.add (neues Blatt ("Blatt xa")); compx.add (neues Blatt ("Blatt xb")); root.add (compx); Composite Compxy = New Composite ("Composite XY"); compxy.add (neues Blatt ("Blatt xya")); compxy.add (New Leaf ("Leaf xyb")); compx.add (compxy); root.getchild (3); }}Anwendungsszenarien
1. Erfordert die Teil-zu-überlebende Hierarchie des Objekts.
2. Wenn der Client möchte, dass der Client den Unterschied zwischen einem kombinierten Objekt und einem einzelnen Objekt ignoriert, verwendet der Client alle Objekte in der kombinierten Struktur einheitlich.
Das Kombinationsmuster definiert eine Klassenstruktur, die aus Blattobjekten und zusammengesetzten Objekten besteht.
Den Kunden einfach machen;
Es macht es einfach, Unterparts hinzuzufügen oder zu entfernen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.