Original: llaves MC (cuenta pública de WeChat: huakuohao-mc), bienvenido a compartir, conserve la fuente para la reimpresión.
El patrón decorador se usa principalmente para agregar alguna funcionalidad adicional sin cambiar la estructura de las clases y los objetos. La idea principal de implementación es definir una clase de decorador que incluya la clase original y proporcione funcionalidad adicional.
por ejemplo
Supongamos que hay una clase de gráficos que puede dibujar patrones de gráficos correspondientes. Si desea agregar color a los gráficos sin cambiar la clase de gráficos original, puede considerar usar el modo de decoración.
Primero echemos un vistazo al UML
diagrama de clases:
Echemos un vistazo a la lógica de implementación del código específico.
Interfaz gráfica para realizar la función de dibujo.
public interface Shape {
void draw();
}
复制代码
Una Circle
clase implementa un círculo.
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Shape: Circle");
}
}
复制代码
Defina una clase de decoración gráfica para implementar la función de coloreado, primero defina una clase de decoración básica abstracta, que incluye la clase original, y sus subclases implementan colores de colores específicos.
public abstract class ShapeDecorator implements Shape {
//引用shap类
protected Shape decoratedShape;
public ShapeDecorator(Shape decoratedShape) {
this.decoratedShape = decoratedShape;
}
@Override
public void draw() {
decoratedShape.draw();
}
}
复制代码
Subclase de coloración concreta RedShapeDecorator
para implementar funciones de coloración específicas.
public class RedShapeDecorator extends ShapeDecorator {
public RedShapeDecorator(Shape decoratedShape) {
super(decoratedShape);
}
@Override
public void draw() {
decoratedShape.draw();
//增加装饰功能
setRedBorder(decoratedShape);
}
//私有着色方法
private void setRedBorder(Shape decoratedShape){
System.out.println("Border Color: Red");
}
}
复制代码
El código de cliente se usa así.
public class DecoratorPatternDemo {
public static void main(String[] args){
Shape circle = new Circle();
//被装饰类修饰的Cirle,画出的圆是红色的。
Shape redCircle = new RedShapeDecorator(new Circle());
//普通圆
circle.draw();
//红色的圆
redCircle.draw();
}
}
复制代码
Resumir
El patrón decorativo es uno de los patrones estructurales, utilizado principalmente para resolver el problema de agregar algunas funciones pequeñas útiles a las clases y objetos sin cambiar la estructura de las clases y objetos originales.
Este artículo hace referencia a www.tutorialspoint.com/design_patt…
Lectura recomendada
1. Esas cosas sobre la programación concurrente en Java (10) - el resumen final
2. Herramientas comunes de localización de problemas de red que los programadores deben dominar