Kombinationsmodus, kombiniert Objekte zu einer Baumstruktur, um eine "Teil-Total" -Hierarchie darzustellen. Mit dem Kombinationsmodus können Benutzer einzelne Objekte und kombinierte Objekte konsequent verwenden. Mit dem Kombinationsmodus können Clients Funktionen vervollständigen, die ursprünglich Prozessteuerungsanweisungen als einfach als Änderung von Konfigurationsdateien erforderten.
Merkmale: Für rekursive oder baumartige hierarchische Datenstrukturen können sie auf einfachste Weise verarbeitet werden.
Anwendungen in der Entwicklung auf Unternehmensebene und häufig verwendeten Rahmenbedingungen: Systemverzeichnisstruktur und Website-Navigationsstruktur
Hier ist ein Beispiel für die Verzeichnisstruktur:
Szenario: Angenommen, wir haben jetzt ein Verzeichnis, und es gibt Unterverzeichnisse und Dateien unter dem Verzeichnis. Jetzt möchten wir das gesamte Verzeichnis und alle Dateien und die Erstellungszeit im Verzeichnis anzeigen.
Der spezifische Code lautet wie folgt:
Paket com.test.comPosite; import Java.util.ArrayList; import Java.util.date; Import Java.util.List; Public Class Demo {public static void main (String [] args) {Datum d = new Date (); Dir F1 = New Dir ("My Collection", D); D.Setyear (2012); Dir F2 = New Dir ("Bild", d); Dir F3 = New Dir ("Musik", d); D.Setyear (2013); Tatsächliche Datei f4 = neuer tatsächlicher Datei ("Xi Yangyang und Big Big Wolf.avi", D); f1.add (f4); Tatsächliche Datei f5 = new tatsalfile ("taiyanghua.jpg", d); Tatsächliche Datei f6 = new tatsalfile ("deformiert Edelstahl.jpg", d); f2.add (f5); f2.add (f6); f1.add (f2); F1.Add (F3); F1.ShowFile (); }}/*** Zunächst einmal gehört das Verzeichnis und die Datei zur Datei, sodass wir eine abstrakte Datei abstrahieren können*/Schnittstelle AbstractFile {/*** Dateimethode anzeigen*/public void showfile ();}/*** reale Datei*/class tatsächliche Datei implements AbstractFile {private String Name; privates Datum erstellt; public taliaFile (Zeichenfolge Name, Datum erstellt) {this.name = name; this.createdate = CreateDate; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public date getCreatedate () {return createdate; } public void setCreatedate (Datum erstellt) {this.createdate = createdate; } / *** Implementieren Sie die Anzeigedateimethode der abstrakten Dateiklasse* / public void showFile () {System.out.println ("Dateiname:"+this.name+"-Zeit erstellen:"+this.createdate.getime ()); }}/*** Verzeichnisdatei*/class Dir implementiert AbstractFile {private String -Name; privates Datum erstellt; / *** Als Verzeichnisdatei gibt es eine zusätzliche Subfileliste*/ private Liste <AbstractFile> list = new ArrayList <> (); public Dir (Zeichenfolge Name, Datum erstellt) {Super (); this.name = name; this.createdate = CreateDate; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public date getCreatedate () {return createdate; } public void setCreatedate (Datum erstellt) {this.createdate = createdate; } / ** * Fügen Sie eine Verzeichnisdatei hinzu, fügen Sie einem Verzeichnis eine Unterdatei oder ein Unterverzeichnis hinzu. } / ** * Betrieb der Verzeichnisdatei löschen, Subfile oder Unterverzeichnis löschen * / public void entfernen (Abstractfile f) {this.list.remove (f); } / ** * Betrieb der Verzeichnisdatei erhalten, erhalten Sie Unterdatei oder Unterverzeichnis unter dem Verzeichnis * / public Abstractfile getIndex (int index) {return this.list.get (index); } public void showfile () {System.out.println ("Verzeichnisname:"+this.name+"-Zeit erstellen:"+this.createdate.getTime ()); für (AbstractFile f: Liste) {f.showfile (); }}}Der Kombinationsmodus ähnelt eher einer Traversalmethode, aber diese Methode hat auch einige Einschränkungen, z.
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.