Mode de combinaison, combinant des objets dans une structure d'arbre pour représenter une hiérarchie "partielle-totale". Le mode combinaison permet aux utilisateurs d'utiliser des objets individuels et des objets combinés de manière cohérente. Le mode de combinaison permet aux clients de remplir des fonctions qui nécessitaient à l'origine des instructions de contrôle de processus aussi simplement que la modification des fichiers de configuration.
Caractéristiques: Pour les structures de données hiérarchiques récursives ou en forme d'arbre, elles peuvent être traitées de la manière la plus simple.
Applications dans le développement au niveau de l'entreprise et les frameworks couramment utilisés: structure de répertoire système et structure de navigation sur le site Web
Voici un exemple de la structure du répertoire:
Scénario: Supposons que nous ayons maintenant un répertoire, et il y a des sous-répertoires et des fichiers dans le répertoire. Maintenant, nous voulons afficher l'intégralité du répertoire et tous les fichiers et le temps de création dans le répertoire.
Le code spécifique est le suivant:
package com.test.composite; import java.util.arraylist; import java.util.date; import java.util.list; public class Demo {public static void main (String [] args) {date d = new Date (); Dir f1 = new Dir ("ma collection", d); D.Setyear (2012); Dir f2 = new Dir ("image", d); Dir f3 = new Dir ("Music", d); D.Setyear (2013); Réel file f4 = new réelfile ("xi yangyang et big big wolf.avi", d); F1.ADD (F4); Réel f5 = new réelfile ("taiyanghua.jpg", d); File réel f6 = nouveau file réel ("acier inoxydable déformé.jpg", d); F2.Add (F5); F2.Add (F6); F1.ADD (F2); F1.ADD (F3); f1.showfile (); }} / ** * Tout d'abord, le répertoire et le fichier appartiennent au fichier, afin que nous puissions résumer un fichier abstrait * / interface abstractFile {/ ** * Méthode d'affichage * / public void showFile ();} / ** * file réel * / class réelfile implémente AbstractFile {nom de chaîne privée; Date privée CréationDate; public réelfile (String Name, date CreateDate) {this.name = name; this.Createdate = CreateDate; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public Date getCreatEdate () {return CreateDate; } public void setCreatEdate (date créée) {this.createdate = CreateDate; } / ** * Implémentez la méthode du fichier d'affichage de la classe de fichiers abstraite * / public void showFile () {System.out.println ("Nom de fichier:" + this.name + "- Create Time:" + this.createdate.getTime ()); }} / ** * Fichier du répertoire * / class Dir met en œuvre AbstractFile {Nom de chaîne privée; Date privée CréationDate; / ** * En tant que fichier de répertoire, il y aura une liste de sous-fichiers supplémentaires * / Liste privée <scustractFile> list = new ArrayList <> (); public dir (nom de chaîne, date de création) {super (); this.name = name; this.Createdate = CreateDate; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public Date getCreatEdate () {return CreateDate; } public void setCreatEdate (date créée) {this.createdate = CreateDate; } / ** * Ajouter un fichier de répertoire, ajouter un sous-fichier ou un sous-répertoire à un répertoire * / public void add (abstractFile f) {this.list.add (f); } / ** * Supprimer le fonctionnement du fichier de répertoire, supprimer le sous-fichier ou le sous-répertoire * / public void retire (abstractFile f) {this.list.remove (f); } / ** * Obtenez le fonctionnement du fichier de répertoire, obtenez un sous-fichier ou un sous-répertoire sous le répertoire * / public abstractFile getIndex (int index) {return this.list.get (index); } public void showFile () {System.out.println ("Nom du répertoire:" + this.name + "- créer du temps:" + this.createdate.getTime ()); pour (abstractFile f: list) {f.showfile (); }}}Le mode combinaison ressemble plus à une méthode de traversée, mais cette méthode a également certaines limites, telles que le ciblage de données similaires à une structure d'arbre.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.