Patrón de creación: constructor

Dec 04 2022
Este artículo analiza cómo se pueden representar y construir objetos complejos sin acoplar las dos operaciones. ¿Qué es? El patrón constructor reduce la cantidad de código necesario para crear objetos.

Este artículo analiza cómo se pueden representar y construir objetos complejos sin acoplar las dos operaciones.

¿Qué es?

El patrón constructor reduce la cantidad de código necesario para crear objetos. Por lo tanto, si tiene que construir algo complejo, puede simplificar este proceso utilizando el patrón de construcción. Un objeto compuesto o agregado es lo que generalmente hace un constructor.

El patrón constructor encapsula el proceso de construcción de un objeto complejo, separando su representación de su construcción. Esto nos permite crear diferentes modelos con el mismo proceso de construcción. En lenguaje Java, esto significa crear objetos de otras clases que pueden compartir el mismo proceso de construcción.

Diagrama de clase

El diagrama de clases incluye las siguientes entidades:

  • Constructor
  • Constructor de hormigón
  • Director
  • Producto

Siguiendo con nuestro ejemplo de los aviones, digamos que la construcción de un avión implica tres pasos:

  1. la fabricación de la cabina
  2. entonces el motor
  3. y por ultimo las alas

Echemos un vistazo al código ahora. Primero, comenzaremos con la interfaz abstracta de nuestra AircraftBuilderclase. A continuación, cada constructor contiene métodos que los constructores concretos pueden anular, dependiendo de si incluirán esa pieza en la variante del producto final que son responsables de construir.

Ahora implementaremos dos constructores de concreto, uno para F-16 y otro para Boeing-747.

Para simplificar, proporcionamos el esqueleto de los constructores y omitimos la implementación individual de cada método. No F16Builderanula el buildBathroomsmétodo porque no hay baños en la cabina del F-16. El creador del Boeing 747 anula el método del baño ya que un Boeing 747 tiene baños para pasajeros.

La Directorclase es responsable de registrar el proceso o algoritmo requerido para crear un avión, como el orden específico en el que se fabrican las diferentes partes. El director es como un constructor de aviones. Los constructores le devuelven el producto terminado.

Tenga en cuenta que podemos pasar al constructor de nuestra elección y variar el producto de la aeronave (representación) para que sea un F-16 o un Boeing-747. En nuestro escenario, los constructores devuelven diferentes supertipos, pero este puede no ser el caso si devuelven productos que no son muy similares.

El cliente aplicará el patrón de esta forma:

La AircraftBuilderinterfaz oculta cómo se construye un avión. El cliente desconoce las clases F16Enginey F16Cockpitque se utilizan para crear los Boeing-747.

saltándose al director

El patrón Builder a menudo se usa sin el director. En su lugar, el cliente puede instanciar directamente el constructor e invocar los métodos necesarios para obtener un producto por sí mismo. Este es un antídoto común para los constructores telescópicos. Por ejemplo, imagine una clase con demasiados atributos, pero algunos de ellos se pueden configurar para que sean opcionales. En tal caso, puede invocar al constructor solo para establecer los atributos necesarios y crear un producto.

Otros ejemplos

  • La API de Java expone una StringBuilderclase que no se ajusta estrictamente al patrón de construcción de GoF, pero todavía se puede considerar como un ejemplo de ello. La clase StringBuilder proporciona un método de adición que devuelve una nueva cadena agregando caracteres de la cadena original.
  • Otro ejemplo hipotético podría ser la creación de documentos de tipo pdf o HTML.

El método anterior puede aparecer en un código de cliente o servidor, y se pueden crear diferentes tipos de documentos pasando un diferente DocumentBuilderal método. Podríamos derivar a HtmlDocumentBuildery a PdfDocumentBuilderde la clase abstracta DocumentBuilder.

Advertencias

Los patrones constructor y fábrica abstracta tienen objetivos similares, pero los abordan de manera diferente. Por ejemplo, el patrón constructor crea objetos paso a paso, mientras que la fábrica abstracta devuelve un objeto de una sola vez.

Otros artículos de la serie Patrón de creación