Modo de combinación, combinando objetos en una estructura de árbol para representar una jerarquía "parcial". El modo de combinación permite a los usuarios usar objetos individuales y objetos combinados de manera consistente. El modo de combinación permite a los clientes completar funciones que originalmente requerían las declaraciones de control de procesos tan simplemente como modificar los archivos de configuración.
Características: Para estructuras de datos jerárquicos recursivas o en forma de árbol, se pueden procesar de la manera más simple.
Aplicaciones en desarrollo de nivel empresarial y marcos de uso común: estructura de directorio de sistemas y estructura de navegación de sitios web
Aquí hay un ejemplo de la estructura del directorio:
Escenario: Supongamos que ahora tenemos un directorio, y hay subdirectorios y archivos en el directorio. Ahora queremos ver todo el directorio y todos los archivos y el tiempo de creación en el directorio.
El código específico es el siguiente:
paquete 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 = nuevo dir ("mi colección", d); d.setyear (2012); Dir f2 = nueva dir ("imagen", d); Dir f3 = nuevo dir ("música", d); D.Setyear (2013); RealFile f4 = new RealFile ("Xi Yangyang y Big Big Wolf.avi", D); f1.add (f4); RealFile f5 = new RealFile ("taiyanghua.jpg", d); RealFile f6 = new RealFile ("acero inoxidable deformado.jpg", d); F2.Add (F5); F2.Add (F6); F1.Add (F2); F1.Add (F3); f1.showfile (); }}/*** En primer lugar, el directorio y el archivo pertenecen al archivo, por lo que podemos abstraer un archivo abstracto*/interface abstractFile {/*** Method del archivo de visualización*/public void showfile ();}/*** archivo real*/class RealFile implementa el nombre de cadena abstracto {nombre de cadena privada; fecha privada creada; public realfile (name de cadena, fecha creatado) {this.name = name; this.createdate = creatate; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } fecha pública GetCreateDate () {return creatate; } public void setCreatedate (date creatateate) {this.createdate = creatateate; } / *** Implemente el método de archivo de visualización de la clase de archivo abstracto* / public void showFile () {System.out.println ("Nombre del archivo:"+this.name+"-crea tiempo:"+this.createDate.getTime ()); }}/*** archivo de directorio*/class dir implements abstractFile {private String Name; fecha privada creada; / *** Como archivo de directorio, habrá una lista de subfiles adicional*/ Lista privada <ArveSfile> list = new ArrayList <> (); public dir (nombre de cadena, fecha creatado) {super (); this.name = name; this.createdate = creatate; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } fecha pública GetCreateDate () {return creatate; } public void setCreatedate (date creatateate) {this.createdate = creatateate; } / ** * Agregue un archivo de directorio, agregue un subfile o subdirectorio a un directorio * / public void add (abstractfile f) {this.list.add (f); } / ** * Eliminar la operación del archivo de directorio, eliminar subfile o subdirectorio * / public void remove (abstractfile f) {this.list.remove (f); } / ** * Obtenga la operación del archivo de directorio, obtenga subfile o subdirectorio debajo del directorio * / public abstractFile getIndex (int index) {return this.list.get (index); } public void showFile () {System.out.println ("Nombre del directorio:"+this.name+"-Crear tiempo:"+this.createdate.gettime ()); para (AbstractFile F: List) {F.ShowFile (); }}}El modo de combinación es más como un método transversal, pero este método también tiene algunas limitaciones, como solo dirigir datos similares a una estructura de árbol.
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.