El mejor tutorial de decorador en 2024. En este tutorial podrás aprender introducción,realización,
Decorador (Decorator) le permite añadir nuevas características a un objeto existente sin cambiar su estructura. Este tipo de patrones de diseño pertenecen modelo estructural, que está disponible como una clase contenedora.
Este patrón crea una decorativo, que se utiliza para envolver los métodos de la clase y clase original en el mantenimiento de la integridad de la firma bajo la premisa de proporcionar funcionalidad adicional.
Utilizamos los siguientes ejemplos para demostrar el patrón decorador. Entre ellos, vamos a formar una decoración en diferentes colores, sin cambiar la forma de la clase.
Intención: dinámicamente a un objeto para agregar algunas responsabilidades adicionales.El aumento de la funcionalidad, el patrón decorador comparó la subclasificación más flexible.
Principalmente para resolver: En general, se utiliza a menudo para extender una herencia de clases de lograr, debido a la introducción de una serie de características de herencia de clases estáticas y ampliado la funcionalidad con el aumento, la subclase se hinche.
Cuándo utilizar: no desea que un aumento en el caso de muchas clases de extensión sub-categoría.
¿Cómo resolver: dividir las responsabilidades funcionales específicos, si bien hereda el patrón decorador.
Código Clave: 1, clase actúa como un papel de componentesabstracta, no debe la aplicación específica. 2, una clase de referencias de clases de componentes modificados y la herencia, las clases de extensiones específicas reemplazar el método de la clase padre.
Ejemplos de aplicación: 1, el Rey Mono 72 cambio cuando se convierte en "templo", él simplemente era un mono, pero tiene una función templo.2, independientemente de un marco de imagen no puede ser colgado en la pared, pero por lo general hay un marco de imagen, y el marco era en realidad colgado en la pared. Antes de colgar en la pared, la pintura puede ser cubierto con vidrio, montado en la casa de madera, y luego la pintura, vidrio y el marco forman de un objeto.
Ventajas: decoración y la decoración se pueden desarrollar de forma independiente, no están acoplados entre sí modelo, decorativo es un modo alternativo de la herencia, los patrones decorativos se puede extender dinámicamente una clase que implementa la función.
Desventajas: más complejo decorativo de múltiples capas.
Escenarios de uso: 1, que se extienden una función de clase.2, el aumento de funcionalidad dinámica, dinámica revocada.
Nota: Puede sustituir la herencia.
Vamos a crear una interfazde la formay la implementación de la interfazen forma declases de entidad. Entonces se crea una realización de la interfaz abstracta decorativaShapeDecoratorLa forma y el objetode la formacomo sus variables de instancia.
RedShapeDecoratores lograr laShapeDecoratorclases deentidad.
DecoratorPatternDemo,nuestras clases de demostración utilizandoRedShapeDecoratorpara decorar objetoShape.
Crear una interfaz.
Shape.java
Forma interfaz pública { void draw (); }
Crear clase de entidad que implementa la interfaz.
Rectangle.java
clase pública implementa Rectángulo Forma { @ Override sorteo public void () { System.out.println ( "Forma: Rectángulo"); } }
Circle.java
Círculo clase pública implementa la forma { @ Override sorteo public void () { System.out.println ( "Forma: Círculo"); } }
Crear lograr la interfaz deformadecorativa abstracta.
ShapeDecorator.java
ShapeDecorator pública clase abstracta implementa la forma { decoratedShape Forma protegidas; ShapeDecorator pública (forma decoratedShape) { this.decoratedShape = decoratedShape; } sorteo public void () { decoratedShape.draw (); } }
Crear una entidad de claseShapeDecoratordecorativa extendida.
RedShapeDecorator.java
RedShapeDecorator clase pública se extiende ShapeDecorator { RedShapeDecorator pública (forma decoratedShape) { super (decoratedShape); } @ Override sorteo public void () { decoratedShape.draw (); setRedBorder (decoratedShape); } setRedBorder private void (forma decoratedShape) { System.out.println ( "Color del borde: Rojo"); } }
RedShapeDecoratorutilizar para decorar objetoShape.
DecoratorPatternDemo.java
public class {DecoratorPatternDemo principales argumentos (String []) {public static void Forma de círculo = new Circle (); Forma redCircle = new RedShapeDecorator (nuevo círculo ()); Forma redRectangle = new RedShapeDecorator (nueva Rectángulo ()); System.out.println ( "círculo con borde normal"); circle.draw (); System.out.println ( "\ nCircle de borde rojo"); redCircle.draw (); System.out.println ( "\ nRectangle de borde rojo"); redRectangle.draw (); } }
Verifique la salida.
Círculo con la frontera de la normalidad Forma: Círculo Círculo de borde rojo Forma: Círculo Frontera de color: Rojo Rectángulo de borde rojo Forma: Rectángulo Frontera de color: Rojo