Descripción del modo decorador
Nota: Use una clase para modificar dinámicamente los objetos funcionales de otra clase antes o después, y agregarle algunas funciones adicionales; Esta es una decoración de las funciones de un objeto de clase. La clase decorativa y la clase decorada requieren el mismo método de interfaz de acceso (función). En clases dinámicas orientadas a objetos, la implementación generalmente se ve limitada por la implementación de la misma interfaz; La clase decorativa debe tener una referencia a la clase decorada, que se utiliza para llamar a los métodos de clase decorativa correspondientes en la clase decorativa, y luego modificarlo;
Ejemplos de escenarios:
1>. Por ejemplo, cuando usamos ropa en nuestras vidas, una camisa, una chaqueta de traje, un par de pantalones, una corbata y un par de hermosos zapatos de cuero; Cada extra es una decoración para el cuerpo o todo el cuerpo;
2>. Por ejemplo, tenemos un método de función en una clase que puede usarse para escribir registros, que pueden usarse para que los usuarios inicien dicha función. Quizás necesitemos obtener la información actual del operador antes de escribir el registro, o escribir un registro después de iniciar sesión con éxito; Las operaciones adicionales antes de escribir el registro son generalmente el propósito de escribir registros; Escribir el registro después del registro correctamente también es generalmente la información de operación del proceso de registro;
Por lo tanto, el modo decorador se utiliza para implementar, y los dos funcionan de manera similar; Es la expansión del decorador del objeto funcional del decorador, que es esencialmente el mismo rango funcional del método original;
Código fuente de instancia
1. Categoría decorada
La copia del código es la siguiente:
function wear () {
}
Wear.prototype.shirt = function () {
// usa una camisa
console.log ('usar una camisa');
}
2. Decoradores
La copia del código es la siguiente:
Function Decorator (Wear) {
this.wear = wear;
}
Decorator.prototype.shirt = function () {
this.wear.shirt ();
// Después de usar una camisa, me puse una corbata de nuevo
}
3. Cómo usar
La copia del código es la siguiente:
var wear = new Wear ();
VAR Decorator = nuevo decorador (desgaste);
decorador.shirt ();
Esto permite la decoración dinámica extendida del objeto de función de desgaste de la camisa. No tiene que saber cómo se realiza el método decorativo original. Solo sepa cuál es su función y luego sepa cuál es la función adicional que queremos agregar a ella;
Otras instrucciones
El patrón del decorador realmente retira el método orientado a objetos: el principio de abrir a extensiones y cerrar las modificaciones; Todos los métodos funcionales deseados se realizan sin modificar el [desgaste de clase decorado] y extender el [decorador de la clase del decorador];
Una característica principal del modelo decorador es que la referencia del decorador al decorador para lograr una decoración no modificada del decorador;
Simulación: escena de usar una camisa primero, luego una corbata y luego un traje: el decorador de arriba permanece sin cambios:
2. Decoradores:
La copia del código es la siguiente:
Function Decorator (Wear) {
this.wear = wear;
}
Decorator.prototype.shirt = function () {
this.wear.shirt (); // Solo usa camisas aquí;
}
3. Cree clases de ropa de empate y de traje similares a heredar la subclase del decorador
La copia del código es la siguiente:
función decorator_tie (decorador) {
this.Decorator = decorador;
}
Decorator_tie.prototype.shirt = function () {
this.Decorator.shirt (); // usa una camisa
console.log ('use una corbata de nuevo');
}
función decorator_western (decorador) {
this.Decorator = decorador;
}
Decorator_western.prototype.shirt = function () {
this.Decorator.shirt ();
console.log ('use un traje nuevamente');
}
Cómo usar:
La copia del código es la siguiente:
// Ponte tu camisa primero
var wear = new Wear ();
VAR Decorator = nuevo decorador (desgaste);
//decorator.shirt ();
// usa una corbata de nuevo
var tie = new Decorator_tie (decorador);
//tie.shirt ();
// Ponte un traje de nuevo
var western = nuevo decorador_western (corbata);
Western.shirt ();
Este es un ejemplo simulado de vestir y decoración;