Aperçu
Il s'agit d'un modèle structurel qui organise des objets dans une structure d'arbre pour représenter une hiérarchie "partielle-totale", ce qui rend le client unique dans l'utilisation d'objets individuels et d'objets combinés.
Diagramme de classe UML
Le diagramme de classe ci-dessus contient les rôles:
Composant: Déclarez une interface commune pour l'objet participant à la composition, qu'il s'agisse d'une combinaison ou d'un nœud feuille.
Feuille: représente un objet de nœud foliaire dans la combinaison, et le nœud feuille n'a pas de nœuds enfants.
Composite: représente l'objet avec des objets enfants participant à la combinaison et donne le comportement de la construction de branches;
Exemple de code
import java.util.arraylist; import java.util.list; composant de classe abstrait {nom de chaîne protégé; composant public (name de chaîne) {this.name = name; } public abstract void add (composant c); Résumé abstrait public Support (composant C); public abstract void getchild (int en profondeur);} classage laaf étend le composant {publicaf (nom de chaîne) {super (nom); } @Override public void add (composant c) {System.out.println ("ne peut pas ajouter à une feuille"); } @Override public void retiver (composant c) {System.out.println ("ne peut pas retirer d'une feuille"); } @Override public void getchild (int de profondeur) {String temp = ""; pour (int i = 0; i <de profondeur; i ++) {temp + = "-"; System.out.println (Temp + Name); }}} Classe Composite étend le composant {private List <COMPONNENT> enfants = new ArrayList <> (); public composite (nom de chaîne) {super (nom); } @Override public void add (composant c) {enfants.add (c); } @Override public void retire (composant c) {enfants.Remove (c); } @Override public void getchild (int de profondeur) {pour (composant c: enfants) {c.getChild (profondeur); }}} public class main {public static void main (String args []) {composite root = new Composite ("root"); root.add (new Leaf ("Leaf A")); root.Add (nouvelle feuille ("feuille B")); Composite Compx = nouveau composite ("Composite X"); compx.add (new Leaf ("Leaf xa")); compx.add (new Leaf ("Leaf XB")); root.add (compx); Composite compxy = nouveau composite ("Composite XY"); compxy.add (new Leaf ("Leaf xya")); compxy.add (nouvelle feuille ("feuille xyb")); compx.add (compxy); root.getchild (3); }}Scénarios d'application
1. Exige la hiérarchie partielle à l'autre de l'objet.
2. Si le client veut que le client ignore la différence entre un objet combiné et un seul objet, le client utilisera uniformément tous les objets de la structure combinée.
Le motif de combinaison définit une structure de classe composée d'objets feuilles et d'objets composites;
Rendre le client simple;
Il facilite l'ajout ou la suppression des sous-parties.
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.