Serie de patrones de diseño - patrones decorativos

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 UMLdiagrama de clases:

decorador.png

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 Circleclase 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 RedShapeDecoratorpara 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

3. ¿Sabes cómo usar esta antigua arma de Awk?

4. Enseñarle a construir un conjunto de plataforma de operación y mantenimiento de búsqueda de registros ELK

Supongo que te gusta

Origin juejin.im/post/7079630910491983885
Recomendado
Clasificación