[Modo de diseño] ------ Modo de generador (en comparación con el modo de plantilla)

Modo de constructor

El modo de construcción es construir una clase de secuencias de ejecución que tengan el mismo orden de ejecución pero diferentes implementaciones, y finalmente produzcan diferentes efectos.

Por ejemplo, escribir ensayos.

Cada vez que escribimos un ensayo, escribimos aproximadamente el título, escribimos el principio, escribimos el contenido y escribimos el final.

public abstract class Builder {

    abstract String 写标题();

    abstract String 写开头();

    abstract String 写内容();

    abstract String 写结尾();
}

Por ejemplo, si desea escribir un artículo en una gira de primavera, implemente los métodos correspondientes de escribir el título, escribir el principio, escribir el contenido y escribir el final.

public class 春游作文 extends Builder {

    @Override
    String 写标题() {
        return "春游";
    }

    @Override
    String 写开头() {
        return "今天,我们几个人去春游。";
    }

    @Override
    String 写内容() {
        return "我们去了哪里,看到什么风景,怎么怎么样。";
    }

    @Override
    String 写结尾() {
        return "啊!春游真好!真有意义啊!";
    }
}

Escribe otra pelicula

public class 看电影作文 extends Builder {
    @Override
    String 写标题() {
        return "看电影";
    }

    @Override
    String 写开头() {
        return "今天,我们几个人一起去看电影。";
    }

    @Override
    String 写内容() {
        return "去哪个电影院,看什么电影,有什么感触。。。";
    }

    @Override
    String 写结尾() {
        return "啊!电影真好看,下次还想看!";
    }
}

Finalmente, venga a un comandante (también puede ser entendido como un estudiante), tiene una forma de escribir ensayos, siempre que se apruebe la subclase de composición correspondiente, puede escribir la composición correspondiente (esto es realmente como el sentimiento de la educación orientada al examen) , Todos los marcos están listos, solo necesita completar el contenido de cada marco).

public class Director {
    public String 写作文(Builder builder){
        String 标题 = builder.写标题();
        String 开头 = builder.写开头();
        String 内容 = builder.写内容();
        String 结尾 = builder.写结尾();
        return 标题 + "\n" + 开头 + "\n" + 内容 + "\n" + 结尾;
    }
}

Prueba uno

public class TestMain {

    public static void main(String[] args) {

        Director director = new Director();
        String 春游作文 = director.写作文(new 春游作文());
        System.out.println(春游作文);

        System.out.println("===================================");
        System.out.println("============下一篇作文===============");
        System.out.println("====================================");

        String 看电影作文 = director.写作文(new 看电影作文());
        System.out.println(看电影作文);
    }
}

Resultado final de impresión:

春游
今天,我们几个人去春游。
我们去了哪里,看到什么风景,怎么怎么样。
啊!春游真好!真有意义啊!
===================================
============下一篇作文===============
====================================
看电影
今天,我们几个人一起去看电影。
去哪个电影院,看什么电影,有什么感触。。。
啊!电影真好看,下次还想看!

Comparación del modo generador y el modo plantilla

De hecho, creo que estos dos patrones de diseño tienen el mismo significado, no hay necesidad de decir por separado

Aunque hay varias opiniones en Internet, la mayoría insiste en discutir las dos por separado.
Pero al final de la discusión, ¿no es solo heredar esa cosa?
Por ejemplo, en el ejemplo anterior, si coloca el método de la última clase de Director en el Generador, ¿no es el modo de plantilla?

Por lo tanto, generalmente pienso en estos dos como un patrón de diseño, que también se puede llamar el patrón generador de plantillas.

Hablando profesionalmente, el general se divide en los siguientes pasos

1. La clase padre define una serie de métodos
2. El método secuencial especificado por la clase padre o el método secuencial para crear una nueva clase define la secuencia de llamada entre cada método.
3. La clase secundaria hereda la clase primaria y reescribe el método correspondiente.
4. Llamar a métodos secuenciales para diferentes subclases producirá diferentes efectos, pero el orden general de ejecución está bajo control.

Bueno, si quieres distinguir:

El modo generador es el segundo paso que utiliza el método de secuencia para crear una nueva clase. La entrada del método es el
modo de plantilla de subclase , que es el segundo paso anterior. La clase padre especifica el método de secuencia y la subclase especifica la llamada

Resumen

Espero que podamos adaptarnos al desarrollo y no tengamos posibilidades de ganar.

Desarrollo realmente asombroso, cuando estaba codificando, claramente usaba cierto patrón de diseño, pero no se daba cuenta de qué modo, solo sabía que era la forma más apropiada de hacerlo. La integración es a través.

Y el tipo de personas que solo quieren usar patrones de diseño en todas partes, usarlos en todas partes y malgastar su energía en distinguir varios patrones de diseño son equivalentes a solo aprender algunos movimientos, y están lejos del ámbito de la fuerza interior.

Por supuesto, los dos tipos de personas anteriores son miles de veces más fuertes que aquellos que no quieren practicar y no tienen las habilidades internas.

203 artículos originales publicados · elogiados 186 · 210,000 visitas

Supongo que te gusta

Origin blog.csdn.net/java_zhangshuai/article/details/105108055
Recomendado
Clasificación