0% encontró este documento útil (0 votos)
56 vistas13 páginas

Patrones de Diseño Creacionales

Este documento resume cinco patrones de diseño creacionales: Factory Method, Abstract Method, Builder, Prototype y Singleton. Factory Method proporciona una interfaz para crear objetos mientras permite a las subclases alterar el tipo de objetos creados. Singleton asegura que una clase tenga una única instancia y un punto de acceso global a ella. Builder construye objetos complejos paso a paso y Prototype copia objetos existentes sin depender de sus clases.

Cargado por

MARIO
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 PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
56 vistas13 páginas

Patrones de Diseño Creacionales

Este documento resume cinco patrones de diseño creacionales: Factory Method, Abstract Method, Builder, Prototype y Singleton. Factory Method proporciona una interfaz para crear objetos mientras permite a las subclases alterar el tipo de objetos creados. Singleton asegura que una clase tenga una única instancia y un punto de acceso global a ella. Builder construye objetos complejos paso a paso y Prototype copia objetos existentes sin depender de sus clases.

Cargado por

MARIO
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 PPTX, PDF, TXT o lee en línea desde Scribd

PATRONES

DE DISEÑO
Patrones Credenciales
Patrones credenciales

Factory Method
Abstract Method
Builder
Prototype
Singleton

Fuente: https://refactoring.guru/es/design-patterns/creational-
patterns
Factory Method

Es un patrón de diseño creacional que proporciona una interfaz para crear objetos en una superclase,
mientras permite a las subclases alterar el tipo de objetos que se crearán.

Diagramas:
Ventajas

• Evitas un acoplamiento fuerte entre el creador y los productos concretos.


• Principio de responsabilidad única. Puedes mover el código de creación de producto a un lugar del
programa, haciendo que el código sea más fácil de mantener.
• Principio de abierto/cerrado. Puedes incorporar nuevos tipos de productos en el programa sin
descomponer el código cliente existente
Desventajas

• Puede ser que el código se complique, ya que debes incorporar una multitud de nuevas subclases
para implementar el patrón. La situación ideal sería introducir el patrón en una jerarquía existente
de clases creadoras.
Singleton
Es un patrón de diseño creacional que nos permite asegurarnos de que una clase tenga una
única instancia, a la vez que proporciona un punto de acceso global a dicha instancia
Estructura:
Usos

• Se utiliza mucho para encapsular


el acceso a bases de datos.

• Información que se utiliza mucho


en el sistema, para no repetirla en
distintos lugares del código.
Ventajas
• Puedes tener la certeza de que una clase tiene una única instancia.
• Obtienes un punto de acceso global a dicha instancia.
• El objeto Singleton solo se inicializa cuando se requiere por primera vez.
Desventajas:
•Vulnera el Principio de responsabilidad única. El patrón resuelve dos problemas al mismo
tiempo.
• El patrón Singleton puede enmascarar un mal diseño, por ejemplo, cuando los componentes
del programa saben demasiado los unos sobre los otros.
• El patrón requiere de un tratamiento especial en un entorno con múltiples hilos de ejecución,
para que varios hilos no creen un objeto Singleton varias veces.
• Puede resultar complicado realizar la prueba unitaria del código cliente del Singleton porque
muchos frameworks de prueba dependen de la herencia a la hora de crear objetos simulados
(mock objects). Debido a que la clase Singleton es privada y en la mayoría de los lenguajes
resulta imposible sobrescribir métodos estáticos, tendrás que pensar en una manera original de
simular el Singleton. O, simplemente, no escribas las pruebas. O no utilices el patrón Singleton.
Abstract Factory

Es un patrón de diseño creacional que nos permite producir familias de objetos relacionados sin
especificar sus clases concretas.
Estructura:
Ventajas

• Puedes tener la certeza de que los productos que obtienes de una fábrica son compatibles
entre sí.
• Evitas un acoplamiento fuerte entre productos concretos y el código cliente.
• Principio de responsabilidad única. Puedes mover el código de creación de productos a un
solo lugar, haciendo que el código sea más fácil de mantener.
• Principio de abierto/cerrado. Puedes introducir nuevas variantes de productos sin
descomponer el código cliente existente.

Desventajas

• Puede ser que el código se complique más de lo que debería, ya que se introducen muchas
nuevas interfaces y clases junto al patrón..
Builder
Es un patrón de diseño creacional que nos permite construir objetos complejos paso a paso.
El patrón nos permite producir distintos tipos y representaciones de un objeto empleando el
mismo código de construcción.
Ventajas

• Reduce el acoplamiento.
• Se independiza el código de construcción de la representación. Las clases concretas que
tratan las representaciones internas no forman parte de la interfaz del Builder.
• Permite variar la representación interna de estructuras complejas, respetando la interfaz
común de la clase Builder
• Cada ConcreteBuilder tiene el código específico para crear y modificar una estructura interna
concreta.
• Distintos Director con distintas utilidades (visores, parsers, etc) pueden utilizar el mismo
ConcreteBuilder.

Desventajas

La complejidad general del código aumenta, ya que el patrón exige la creación de varias clases
nuevas.
Prototype

Es un patrón de diseño creacional que nos permite copiar objetos existentes sin que el
código dependa de sus clases.
Ventajas
•Puedes clonar objetos sin acoplarlos a sus clases concretas.
• Puedes evitar un código de inicialización repetido clonando prototipos prefabricados.
• Puedes crear objetos complejos con más facilidad.
• Obtienes una alternativa a la herencia al tratar con preajustes de configuración para
objetos complejos.

Desventajas

•Clonar objetos complejos con referencias circulares puede resultar complicado.

También podría gustarte