Modo de diseño Big Talk: modo de ingeniería simple

Modo de diseño: modo de ingeniería simple

Definición y estructura

definición

El modo de ingeniería simple pertenece al modo de creación, también conocido como modo de método de ingeniería estática. En el modo de ingeniería simple, las instancias de diferentes clases se pueden devolver de acuerdo con diferentes parámetros. El modo de fábrica estática define específicamente una clase para que sea responsable de crear instancias de subclases , Las subclases creadas suelen tener una clase padre común

Diagrama de estructura

Generalmente dividido en tres categorías:

  • Fábrica: la clase de fábrica, el núcleo del modelo de ingeniería simple, es responsable de implementar la lógica interna de creación de todas las instancias. El mundo exterior puede llamar directamente al método de creación de una clase de producto de la clase de fábrica para crear el objeto de producto requerido.
  • IProduce: clase de producto abstracto, la clase principal de todos los objetos creados por el modelo de ingeniería simple, que es responsable de describir la interfaz común común a todas las instancias
  • Producto: la categoría de producto específica es la categoría objetivo del modelo de ingeniería simple.

lograr

Supongamos que hay un fabricante de bolígrafos que desea producir diferentes tipos de bolígrafos, por lo que se necesita una clase separada para producir bolígrafos.

Clase de resumen de producto

public abstract class Pen {
    
    
   // 产品的抽象方法,由具体的产品类去实现
    public abstract void start();
}

Clase de implementación específica

public class Pencil extends Pen {
    
    
    @Override
    public void start(){
    
    
        System.out.println("pencil start!");
    }
}

public class Ballpen extends Pen {
    
    
    @Override
    public void start(){
    
    
        System.out.println("Ballpen start!");
    }
}

Clase de fábrica

public class PenFactory {
    
    
    public static  Pen creatPen(String type){
    
    
        Pen pen=null;
        switch(type){
    
    
            case "pencil":
                pen=new Pencil();
                break;
            case "ballpen":
                pen= new Ballpen();
                break;
            default:
                break;
        }
        return pen;
    }
}

prueba

public class Test {
    
    

    public static void main(String[] args) {
    
    
        Pen pen=PenFactory.creatPen("pencil");
        pen.start();
    }
}

Pros y contras

ventaja

  • La clase de fábrica contiene los juicios lógicos necesarios, que pueden decidir qué instancia de clase de producto crear en el momento anterior, el cliente puede eximir la responsabilidad de crear objetos de producto entre ellos, y solo consumir el producto, realizando la división de responsabilidad.
  • El lado del cliente conoce el nombre de la categoría de producto específica, y solo necesita conocer los parámetros correspondientes para facilitar la creación
  • Al introducir archivos de configuración, se pueden reemplazar y agregar nuevas categorías de productos específicos sin cambiar el código del cliente, lo que mejora la flexibilidad del sistema hasta cierto punto.

Desventaja

  • Dado que la clase de fábrica se concentra en la lógica de creación de todos los productos, una vez que ocurre un problema, todo el sistema se verá afectado
  • La expansión del sistema es difícil. Una vez que se agrega un nuevo producto, se debe modificar la lógica de la fábrica, lo que rompe el principio de apertura y cierre. En el caso de más productos, es fácil generar una lógica compleja, que no propicia la expansión y el mantenimiento.
  • El modelo de fábrica simple utiliza métodos de ingeniería estáticos, lo que evita que los roles de ingeniería formen una jerarquía basada en la herencia.

Escena aplicable

  • La clase de fábrica es responsable de crear menos objetos. Dado que hay menos objetos creados, la lógica empresarial no será demasiado complicada.
  • El cliente solo necesita conocer los parámetros creados y no necesita preocuparse por cómo implementarlos

Al final

  • Si siente que ha sido recompensado después de leer, espero que me apruebe. Esta será mi mayor motivación para actualizar. Gracias por su apoyo.
  • Bienvenidos a todos para que presten atención a mi cuenta oficial [java Toka Fox], se centren en los conocimientos básicos de Java y la computadora y se aseguren de obtener algo después de leerlo. Si no me creen, péguenme
  • Si tiene diferentes opiniones o sugerencias después de leer, bienvenido a comentar y compartir. Gracias por tu apoyo y cariño.

Supongo que te gusta

Origin blog.csdn.net/issunmingzhi/article/details/107014060
Recomendado
Clasificación