Latest web development tutorials

modo combinado

el modo combinado (patrón Composite), también conocido como parte del patrón general es para un grupo de objetos similares a los de un solo objeto. patrón de combinación basado en una estructura de árbol para combinar objeto que representa la parte y el nivel general. Este tipo de patrones de diseño pertenecen modelo estructural, se crea una estructura de árbol del grupo objetivo.

Este patrón creado una clase contiene su propio grupo de objetos. Esta clase proporciona una manera de modificar el mismo grupo de objetos.

Nos por los siguientes ejemplos para demostrar el uso de una combinación de modos. Los ejemplos demuestran la jerarquía de los empleados de una organización.

introducción

Intención: Componer objetos en estructuras de árbol para representar "parte - todo" jerarquía.modo combinado permite al usuario utilizar un único objeto y las composiciones de los objetos de manera uniforme.

Principalmente para resolver: Es un problema de nuestro árbol, borrando el concepto de elementos simples y complejos elementos, el cliente puede manejar los elementos tan simple de manejar elementos complejos, por lo que la estructura interna de la disociación de cliente y elementos complejos.

Cuándo utilizar: 1, el objeto que desea representar parte - la jerarquía entera (árbol).2, que desea que diferentes usuarios ignoran la combinación de objetos con un único objeto, el usuario será combinado estructura unificada para todos los objetos.

Cómo solucionar: las ramas y las hojas para lograr interfaz unificada, la interfaz es una combinación de ramas internas.

El código de la llave: composición interna de madera de la interfaz, y contiene lista de atributos internos, lo que puso de componentes.

Ejemplos de aplicación: 1, expresiones aritméticas incluyendo operandos, operadores, y el otro operando, que puede ser otra operación de árbol de operador, operadores, y el otro operando.2, Java AWT y Swing, por Button y Casilla de verificación son las hojas, rama de un árbol de contenedores.

Ventajas: 1, módulo alto nivel simples llamadas.2, el nodo mayor libertad.

Contras: Cuando se utiliza el modo de combinación, sus hojas y ramas están implementando declaración de la clase, en lugar de las interfaces, en violación de la Dependencia Inversión Principio.

Escenarios de uso: parte, la escena global, tales como menú de árbol, archivo, gestión de carpetas.

Nota: Cuando se define una categoría específica.

realización

Tenemos unempleadode laclase,la clase es tratada como una combinación de la clase del modelo.CompositePatternDemo,que demuestran el uso de la claseEmpleadoclase para agregar una jerarquía departamento y grabados todos los empleados.

Combinación de patrones diagrama UML

Paso 1

Crear claseEmployee,la clase con una lista de objetosa los empleados.

Employee.java

java.util.ArrayList importación;
java.util.List importación;

Public class Empleado {
   private String nombre;
   dept cadena privada;
   salario int privado;
   Lista de los empleados <> subordinados privadas;

   // Constructor del empleado público (String nombre, departamento de cuerda, int Sal) {
      this.name = nombre;
      this.dept = departamento;
      this.salary = Sal;
      subordinados = new ArrayList <Empleado> ();
   }

   public void add (Empleado e) {
      subordinates.add (e);
   }

   public void remove (Empleado e) {
      subordinates.remove (e);
   }

   Lista pública <Empleado> getSubordinates () {
     subordinados regresar;
   }

   public String toString () {
      volver ( "Empleado: [Nombre:" + nombre 
      + ", Dpto:" + + departamento ", el sueldo:"
      Sueldo + + "]");
   }   
}

Paso 2

Utilice la clasede empleadopara crear e imprimir la jerarquía de los empleados.

CompositePatternDemo.java

CompositePatternDemo public class {
   principales argumentos (String []) {public static void
      CEO empleado = new Empleado ( "Juan", "director general", 30000);

      headSales los empleados = nuevo empleado ( "Robert", "Ventas Jefe", 20000);

      Empleado headMarketing = new Empleado ( "Michel", "Jefe de Marketing", 20000);

      clerk1 empleado = new Empleado ( "Laura", "Marketing", 10000);
      clerk2 empleado = new Empleado ( "Bob", "Marketing", 10000);

      Empleado salesExecutive1 = new Empleado ( "Richard", "Ventas", 10000);
      Empleado salesExecutive2 = new Empleado ( "Rob", "Ventas", 10000);

      CEO.add (headSales);
      CEO.add (headMarketing);

      headSales.add (salesExecutive1);
      headSales.add (salesExecutive2);

      headMarketing.add (clerk1);
      headMarketing.add (clerk2);

      // Impresión System.out.println todos los empleados de la organización (CEO); 
      para (Empleado headEmployee: CEO.getSubordinates ()) {
         System.out.println (headEmployee);
         para los empleados (Employee: headEmployee.getSubordinates ()) {
            System.out.println (empleado);
         }
      }		
   }
}

paso 3

Verifique la salida.

Empleado: [Nombre: Juan, departamento: CEO, sueldo: 30000]
Empleado: [Nombre: Robert, departamento: Jefe de ventas, sueldo: 20000]
Empleado: [Nombre: Richard, departamento: ventas, sueldo: 10000]
Empleado: [Nombre: Rob, departamento: ventas, sueldo: 10000]
Empleado: [Nombre: Michel, departamento: Jefe de Marketing, sueldo: 20000]
Empleado: [Nombre: Laura, departamento: Marketing, sueldo: 10000]
Empleado: [Nombre: Bob, departamento: Marketing, sueldo: 10000]