El decorador a menudo se traduce como "decoración". Estas dos entidades son necesarias en el modo decorador.
Definición del decorador: dinámicamente agrega algunas responsabilidades adicionales a un objeto, como pintar la pared. El uso del modo decorador es más flexible que usar la generación de subclases para lograr la expansión funcional.
Por qué usar decorador
Por lo general, podemos usar la herencia para lograr la expansión de la función. Debe prever estas funciones de expansión.
La razón para usar decorador es que estas funciones deben ser decididas dinámicamente por el usuario para unirse. Decorator proporciona un método de "plug and play" para decidir cuándo agregar qué características durante el tiempo de ejecución.
Cómo usar el modo decorativo
Tome el ejemplo de la conducción de pilotes en el adaptador. Conducir pilas, como cavar.
Creemos una interfaz primero:
La copia del código es la siguiente:
trabajo de interfaz pública {
Public void Insert ();
}
El trabajo de la interfaz tiene una implementación específica: inserte pilas cuadradas o pilas circulares. Tomemos la inserción de una pila cuadrada como ejemplo:
La copia del código es la siguiente:
Public Class Squarepeg implementa el trabajo {
Public void insert () {
System.out.println ("Inserción de pila cuadrada");
}
}
Ahora hay una aplicación: antes de que se conduzca la pila, cavar un agujero, y después de que se conduzca la pila, el tablero de madera está clavado en la pila. Puede ser necesario clavar la rejilla después de que la pila se conduzca (solo una metáfora).
Luego usamos el modo decorador, donde el cuadrante de pila cuadrada es el decorado (pintado por pintura), necesitamos pintar algo de "pintura" en el decorado, y estas pinturas son esas funciones adicionales.
La copia del código es la siguiente:
Decorador de clase pública Implementa el trabajo {
trabajo privado;
// La funcionalidad adicional está empaquetada en esta lista
Private ArrayList otros = new ArrayList ();
// Use el nuevo método combinado en el constructor para introducir objetos de trabajo;
decorador público (trabajo de trabajo) {
this.Work = Work;
otros.add ("cavar un agujero");
otros.Add ("Nail Board");
}
Public void insert () {
newmethod ();
}
// En el nuevo método, agregamos otros métodos antes de insertar, el pedido aquí lo especifica de manera flexible
public void newmethod () {
otroMethod ();
trabajo.insert ();
}
public void OtherMethod () {
ListIterator listIterator = otros.ListIterator ();
while (listIterator.hasNext ()) {
System.out.println ((((string) (listIterator.next ())) + "en progreso");
}
}
}
En el ejemplo anterior, clasificamos los agujeros de excavación y las tablas de clavos frente al inserto de la pila.
Ok, el modo decorador está fuera, veamos cómo llamarlo:
La copia del código es la siguiente:
Trabajo squarepeg = new Squarepeg ();
Decorador de trabajo = nuevo decorador (Squarepeg);
decorador.insert ();
El modo decorador se completa aquí.
Si tiene cuidado, encontrará que la llamada anterior es similar a la llamada que leemos cuando leemos el archivo:
La copia del código es la siguiente:
FileReader FR = New FileReader (nombre de archivo);
BufferedReader BR = New BufferedReader (FR);
De hecho, la API de E/S de Java se implementa utilizando el decorador.
Implementación del decorador en Jive
En el sistema del foro, algunos caracteres especiales no pueden aparecer en el foro, como "Down with XXX", necesitamos filtrar estas fuentes "reaccionarias". No dejes que aparezcan o muestrelos en alto brillo.
En un artículo que habla específicamente sobre Jive en la columna Java de IBM, se mencionó que paraUmsageFilter.java en Jive utiliza el modo decorador. , entonces puedes reorganizar para unmessagefilter como el modo decorador.
Por lo tanto, cuando decidamos si es realmente el modo decorador y realmente usaremos el modo decorador, debemos comprender la definición del modo decorador y los roles involucrados (decorar y decorar).