0% encontró este documento útil (0 votos)
55 vistas12 páginas

Patrón de Diseño Builder en POO

Este documento presenta el patrón de diseño Builder. Explica que Builder permite construir objetos complejos de forma flexible y desacoplada, centralizando el proceso de construcción. Describe los roles clave como Director, que dirige el proceso de construcción, y Builder, que define la interfaz para construir el objeto. El patrón es útil cuando se quiere que el mismo proceso de construcción cree diferentes representaciones del objeto.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
55 vistas12 páginas

Patrón de Diseño Builder en POO

Este documento presenta el patrón de diseño Builder. Explica que Builder permite construir objetos complejos de forma flexible y desacoplada, centralizando el proceso de construcción. Describe los roles clave como Director, que dirige el proceso de construcción, y Builder, que define la interfaz para construir el objeto. El patrón es útil cuando se quiere que el mismo proceso de construcción cree diferentes representaciones del objeto.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD PRIVADA ANTENOR ORREGO

FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERIA DE COMPUTACION Y SISTEMAS

PATRÓN DE DISEÑO BUILDER

CURSO:
PROGRAMACIÓN ORIENTADA A OBJETOS

AUTORES:

ASUNCIÓN CHIRA, GERARDO

CEDAMANOS GUEVARA, JULIO

FERNANDEZ MUGUERZA, ANDY

GUTIÉRREZ RUBIO, BRYAM

MELENDEZ QUEZADA, FABRICIO

QUISPE CESIAS, ANDRO

RODRIGUEZ ACEVEDO, RONALDO

DOCENTE:

MS. ING. ZORAIDA YANET VIDAL MELGAREJO

TRUJILLO-PERU

2023
ÍNDICE

ÍNDICE

INTRODUCCIÓN

I. MARCO TEÓRICO

1.1. Nombre del patrón

1.2. Clasificación del patrón

1.3. Intenciones

1.4. Conocido como

II. CONTEXTO

2.1. Motivación

2.2. Aplicabilidad

2.3. Estructura

2.4. Participantes

2.5. Colaboraciones

2.6. Consecuencias

III. PRESENTACIÓN DE RESULTADOS

3.1. Implementación

3.2. Código de ejemplo

2.4. Usos conocidos

2.6. Patrones relacionados

IV. CONCLUSIONES
V. REFERENCIAS BIBLIOGRÁFICAS
INTRODUCCIÓN

En este informe se pretende presentar de forma inmersiva y exhaustiva, todo aquello


relacionado con el Patrón de Diseño Builder, tomando como referencia el tema de patrones de
diseño y demostrando punto a punto la profunda investigación que se requirió para este
informe.

El lugar de desempeño de la investigación para el presente informe fue la Universidad Privada


Antenor Orrego.

Esta investigación tiene como objetivo presentar la opción del patrón de diseño Builder, para
las futuras implementaciones de proyectos a realizar como Ingenieros de Computación y
Sistemas.

En el presente informe, se da la completa visualización de la información requerida para


conocer por completo lo que implica el patrón de diseño Builder, así como también incluye
ejemplos del mismo y juicio crítico de los autores.

1. NOMBRE DEL PATRÓN:


El nombre estándar para el patrón de diseño Constructor aceptado por la comunidad
de desarrollo de software es simplemente “Builder”. Es un término aceptado y de uso
común para este patrón en la literatura técnica, la documentación y las discusiones
entre los desarrolladores. El objetivo de los patrones de diseño es proporcionar
soluciones reutilizables y compartir conocimientos con la comunidad de desarrollo de
software.

2. CLASIFICACIÓN DEL PATRÓN:

El patrón builder pertenece a la categoría de patrones creacionales, que al contrario


que otros, Builder permite construir productos que no siguen una interfaz común. Es
decir que ofrecen el mismo tipo de solución sin la necesidad de seguir una forma de
hacerlo en común.

3. INTENCIONES:

La intención del patrón Builder es proporcionar una solución flexible y desacoplada


para la construcción de objetos complejos, centralizando dicho proceso en un único
punto, de tal forma que el mismo proceso de construcción pueda crear
representaciones diferentes. El patrón Builder sugiere que saques el código de
construcción del objeto de su propia clase y lo coloques dentro de objetos
independientes llamados constructores.

4. TAMBIÉN CONOCIDO COMO:

El patrón de diseño Builder es conocido tanto como Builder como Constructor y se utiliza
para construir objetos complejos paso a paso.

5. MOTIVACIÓN:

Digamos que se tiene un lector del formato de intercambio de documentos RTF (Rich Text
Format), el cual puede convertir un texto a varios formatos de representación diferentes,
sin embargo, en un futuro se puede presentar la necesidad de añadir un nuevo tipo de
conversión, sin modificar el lector. Al configurar la clase Lector RTF con un objeto
ConvertidorDeTexto que convierte RTF a otra representación textual. Si imaginamos el
lector como una clase que realiza un análisis de información que se pasa dicha información
a una nueva subclase que realiza la conversión, esta subclase es la que irá añadiendo las
especializaciones a nuevos formatos

6. APLICABILIDAD:

Se debe usar este patrón si se quiere:

➢ Que el algoritmo para la creación de objetos complejos sea independiente de


las partes que construyen el objeto y cómo son ensambladas.
➢ Que el proceso de construcción pueda tener diferentes representaciones para
el objeto que está construido.

7. ESTRUCTURA:

Para describir las clases que intervienen en el patrón de diseño Builder, son oportunos
los siguientes diagramas de clase:

7.1 Diagrama de clases estructural:


● Clase Director: Es responsable de dirigir el proceso de construcción utilizando
el Builder.
● Clase Builder: Define la interfaz o clase abstracta que proporciona métodos
para construir las partes y obtener el resultado.
● Clases ConcreteBuilder: Implementan el Builder y definen cómo construir las
partes del objeto complejo.
● Clase Product: Representa el objeto complejo que se está construyendo.

7.2 Diagrama de clases de secuencia:

Este diagrama muestra las interacciones entre las clases durante la


construcción del objeto complejo. Muestra como el Director utiliza el Builder
para construir el objeto paso a paso. Esto puede ayudar a comprender el flujo
de ejecución y las responsabilidades de cada clase en el proceso de
construcción.

7.3 Diagrama de clases de colaboración:

Este diagrama muestra cómo las clases colaboran entre sí para construir el
objeto complejo. Muestra las interacciones y las dependencias entre las clases
durante el proceso de construcción. Puede proporcionar una vista más
detallada de cómo las clases se comunican y trabajan juntas.

8. PARTICIPANTES:

En el patrón de diseño builder intervienen las siguientes clases abstractas :

Builder(Constructor): Define los pasos necesarios para la construcción de un objeto


complejo. Especifica los métodos necesarios para la configuración de algunas partes del
[Link]ás, proporciona un método que da como resultado el objeto final
construido.

Concrete Builder (Constructor Concreto): Define la forma en la que se construirán los


objetos y proporciona los métodos necesarios para la configuración de diversas partes
que sean necesarias modificar.

Cada concrete Builder tiene su forma personalizada de construir el objeto, lo que


permite la creación de diferentes objetos.

Director: Clase que es responsable del manejo de Builder para la construcción del objeto
final.

Identifica los pasos de construcción y el orden que debe realizarse. Además, define el
flujo de construcción invocando a los métodos del Builder en el orden establecido que
dará como resultado el objeto final.

Producto: Es el resultado de la construcción utilizando el patrón builder. Puede ser una


clase o una estructura con partes modificables.

9. COLABORACIONES:
La colaboración entre los participantes es la siguiente:

● El cliente crea una instancia del Director y una instancia del Builder adecuado, y los
conecta entre sí.
● El cliente configura el Builder con los pasos de construcción específicos requeridos.
● El Director recibe los pasos de construcción del cliente y los ejecuta secuencialmente
en el Builder.
● El Builder realiza las operaciones necesarias para construir las partes del objeto
complejo según los pasos proporcionados por el Director.
● El cliente puede solicitar el objeto construido al Director una vez que se ha completado
el proceso de construcción.

10. CONSECUENCIAS

Utilizar el patrón de diseño Builder conlleva encuadrar el código implementado en una


serie de convencionalismos, los cuales se han tipificado para el mayor entendimiento y
la optimización de dicho código.

Por lo cual es razonable señalar que tomar este patrón de diseño tendrá como
consecuencias positivas:

• Permite reutilizar el mismo código de construcción al construir varias


representaciones de productos.

• Reduce el acoplamiento, por lo que hace más independientes a los


componentes del código.

• Principio de responsabilidad única. Puedes aislar un código de construcción


complejo de la lógica de negocio del producto.

• Permite variar la representación interna del objeto, respetando la clase


builder. Es decir, conseguimos independizar la construcción de la representación

Sin embargo el tomar como referencia este patrón de diseño en nuestra programación
implica asumir como consecuencia negativa que:

● Aumenta considerablemente la complejidad del código, ya que es necesario la


creación de varias clases nuevas.

11. IMPLEMENTACIÓN

El patrón de diseño Builder se utiliza cuando queremos construir objetos complejos paso a
paso, permitiendo la creación de diferentes variaciones de un objeto sin tener que crear
múltiples constructores o utilizar un constructor con muchos parámetros. El objetivo
principal del patrón Builder es separar la construcción de un objeto de su representación, de
modo que el mismo proceso de construcción pueda crear diferentes representaciones.

Consta de los siguientes componentes:

Producto: Es la clase final que queremos construir. Puede ser un objeto complejo con
múltiples propiedades y métodos.

Interfaz Builder: Define los métodos necesarios para construir cada parte del objeto
complejo. Estos métodos se utilizan para establecer los valores de las propiedades del
producto.
Implementaciones de Builder: Proporciona implementaciones concretas de la interfaz
Builder. Cada implementación se centra en la construcción de una variación específica del
objeto complejo. Los métodos de construcción dentro de estas implementaciones
establecen los valores de las propiedades del producto de acuerdo con las necesidades
específicas.

Director: Es opcional y se utiliza para coordinar el proceso de construcción utilizando el


Builder. El director recibe el Builder como entrada y llama a los métodos de construcción en
un orden específico para construir el objeto complejo. El director conoce la secuencia y la
lógica de construcción, pero no sabe los detalles específicos de cada implementación del
Builder.

Cliente: Es el código que utiliza el director y el Builder para construir el objeto complejo. El
cliente crea una instancia del director, establece el Builder apropiado en el director y llama a
los métodos del director para iniciar el proceso de construcción. Al finalizar la construcción,
el cliente obtiene el objeto complejo llamando a un método en el director.

El flujo típico de uso del patrón Builder es el siguiente:

➔ El cliente crea una instancia del directo.


➔ El cliente crea una instancia del Builder correspondiente para construir una
variación específica del objeto complejo.
➔ El cliente establece el Builder en el director.
➔ El director coordina el proceso de construcción llamando a los métodos de
construcción del Builder en un orden específico.
➔ Una vez que se completa la construcción, el cliente obtiene el objeto complejo
llamando a un método en el director para obtener el producto final.

El patrón de diseño Builder proporciona una forma flexible y modular de construir objetos
complejos, permitiendo la creación de diferentes variaciones del producto sin modificar su
estructura interna. También mejora la legibilidad y mantenibilidad del código, ya que separa
la lógica de construcción del objeto de su implementación concreta.

12. CÓDIGO DE EJEMPLO


13. USOS CONOCIDOS:

➔ Java StringBuilder: La clase “StringBuilder” en Java se utiliza para construir y manipular


cadenas de caracteres de manera eficiente. Proporciona métodos como “append()”,
“insert()”, “delete()”, etc. , que permiten construir y modificar una cadena de
caracteres paso a paso.
➔ Colecciones inmutables de Google Guava: Google Guava es una biblioteca de
utilidades para Java. La clase “InmutableList” de Guava utiliza el patrón Builder para
construir colecciones inmutables. Permite agregar elementos a la lista uno por uno
mediante el método “add()” y finalmente obtener una instancia inmutable de la lista.
➔ Android [Link]: En el desarrollo de aplicaciones Android, la clase
“[Link]” se utiliza para construir cuadros de diálogo de alerta de manera
programática. Proporciona métodos para establecer, título, mensaje, botones y otras
propiedades del cuadro de diálogo, lo que permite construir un cuadro de diálogo
personalizado paso a paso.
➔ JPA (API de persistencia de JAVA): JPA es una selección de Java que define una interfaz
estándar para mapear objetos Java a bases de datos relacionales. En JPA, se utiliza este
patrón en el proceso de construcción de consultas de lenguaje de consulta de
objetos(JPQL) mediante la clase “CriteriaBuilder”. Permite construir consultas de
manera programática y proporciona métodos para especificar condiciones,
proyecciones y ordenamientos, etc.

14. PATRONES RELACIONADOS:

El patrón de diseño Builder se puede combinar con otros patrones para resolver
problemas más complejos y lograr soluciones más flexibles, entre ellos tenemos los
siguientes:

14.1 Abstract Factory(Fábrica Abstracta): El patrón Builder se puede combinar con


la Abstract Factory para proporcionar una forma de construir objetos complejos de
manera coherente y crear familias de objetos relacionados.
14.2 Factory Method(Método de Fábrica): El patrón Builder se puede combinar con
el Factory Method para encapsular la creación de objetos complejos en una clase
separada, proporcionando flexibilidad y reutilización.

14.3 Prototype(Prototipo): El patrón Builder se puede combinar con el Prototype


para construir objetos complejos a partir de prototipos existentes y personalizarlos
según las necesidades del cliente.

14.4 Composite(Compuesto): El patrón Builder se puede combinar con el


Composite cuando se desea construir objetos complejos con estructuras jerárquicas o
de árbol, donde cada parte del objeto se puede tratar de manera uniforme.

14.5 Decorator(Decorador): El patrón Builder se puede combinar con el Decorator


para agregar funcionalidad adicional o características decorativas a los objetos
complejos construidos.

14.6 Singleton: El patrón Builder se puede combinar con el Singleton cuando se


desea asegurar que solo exista una instancia de la clase Builder en todo el sistema,
controlando así el proceso de construcción.

CONCLUSIONES

Para concluir, el uso de patrones de diseño mejora la modularidad y flexibilidad en el


momento de realizar nuestro código y crear objetos complejos; En cuanto a los patrones
creacionales donde se encuentran el patrón de diseño builder, este permite la
construcción de diferentes objetos sin mostrar su lógica interna. De modo que resulta
muy beneficioso porque permite modificar y agregar fácilmente sin intervenir en el
proceso de codificación.

Además en el manejo del patrón builder se puede relacionar con otros, para la
creación de objetos más complejos. De manera que sus aplicaciones son muy diversas.

Las colaboraciones serán necesarias para definir los métodos que contribuirán a la
creación de diferentes objetos personalizados, estas se relacionan permitiendo al
director utilizar los métodos del builder para la construcción del producto de manera
modular y flexible.

Sin embargo el patrón de diseño builder es muy complejo para objetos simples o
cuando se necesita una construcción básica . En este caso, su uso agregaría complejidad
al código.

En pocas palabras se podría decir que el patrón de diseño builder es una herramienta
muy valiosa cuando se necesita crear objetos muy complejos con diferentes
representaciones. El cual proporciona flexibilidad y legibilidad, lo cual contribuye al
mantenimiento del código.
REFERENCIAS BIBLIOGRÁFICAS

[Link]

[Link]

“Introducción a los patrones de diseño: Un enfoque práctico” - Oscar Blancarte Iturralde

[Link]

[Link]

[Link]

[Link]
patrones_de_diseno_iii_patrones_de_creacion_builder_1002

[Link]

[Link]

Constructor. (2012). Marco de desarrollo de la Junta de Andalucía. Recuperado de


[Link]
[Link]

Patrones de diseño, (2003). Elementos de software orientado a objetos reutilizable - Erich


Gamma, John Vlissides, Ralph Johnson, Richard Helm

[Link]
%[Link]

También podría gustarte