Descripción general
Es un patrón estructural que organiza objetos en una estructura de árbol para representar una jerarquía "parcial-total", lo que hace que el cliente sea único en el uso de objetos individuales y objetos combinados.
Diagrama de clase UML
El diagrama de clase anterior contiene los roles:
Componente: declare una interfaz común para el objeto que participa en la composición, ya sea una combinación o un nodo de hoja.
Hoja: representa un objeto de nodo de hoja en la combinación, y el nodo de la hoja no tiene nodos infantiles.
Compuesto: representa el objeto con objetos infantiles que participan en la combinación y da el comportamiento de la construcción de la rama;
Ejemplo de código
import java.util.arrayList; import java.util.list; componente de clase abstracta {nombre de cadena protegida; Public Component (nombre de cadena) {this.name = name; } public abstract void add (componente c); Public Abstract Void Retember (Componente C); public abstract void getChild (int profundidad);} La hoja de clase extiende el componente {hojas públicas (nombre de cadena) {super (nombre); } @Override public void add (componente c) {system.out.println ("no puede agregar a una hoja"); } @Override public void remove (componente c) {system.out.println ("no puede eliminar de una hoja"); } @Override public void getChild (int profundidad) {string temp = ""; for (int i = 0; i <profundidad; i ++) {temp+= "-"; System.out.println (tempt + nombre); }}} Class Composite extiende el componente {Lista privada <COMPONIENTE> Children = New ArrayList <> (); Public Composite (nombre de cadena) {super (nombre); } @Override public void add (componente c) {children.add (c); } @Override public void remove (componente c) {children.remove (c); } @Override public void getChild (int profundidad) {para (componente c: niños) {c.getChild (profundidad); }}} public class Main {public static void main (string args []) {compuesto root = new Composite ("raíz"); root.add (nueva hoja ("hoja A")); root.add (nueva hoja ("hoja b")); Compuesto compx = nuevo compuesto ("compuesto x"); compx.add (nueva hoja ("hoja xa")); compx.add (nueva hoja ("hoja xb")); root.add (compx); Compuesto compxy = nuevo compuesto ("compuesto xy"); compxy.add (nueva hoja ("hoja xya")); compxy.add (nueva hoja ("hoja xyb")); compx.add (compxy); root.getChild (3); }}Escenarios de aplicación
1. Requiere la jerarquía parcial del objeto.
2. Si el cliente quiere que el cliente ignore la diferencia entre un objeto combinado y un solo objeto, el cliente usará todos los objetos en la estructura combinada de manera uniforme.
El patrón de combinación define una estructura de clase compuesta de objetos de hoja y objetos compuestos;
Simplificar el cliente;
Hace que sea fácil agregar o eliminar subpartes.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.