0% encontró este documento útil (0 votos)
11 vistas15 páginas

Factory Method y Abstract Factory

El documento compara los patrones de diseño Factory Method y Abstract Factory, destacando sus propósitos, niveles de abstracción, complejidad y flexibilidad. Además, se discuten implementaciones de los patrones Singleton, Builder, Prototype, Factory Method y Abstract Factory, proporcionando ejemplos prácticos y explicaciones sobre su uso en la creación de objetos y gestión de datos. Se enfatiza la importancia de estos patrones en el desarrollo de software orientado a objetos para mejorar la mantenibilidad y extensibilidad del código.
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)
11 vistas15 páginas

Factory Method y Abstract Factory

El documento compara los patrones de diseño Factory Method y Abstract Factory, destacando sus propósitos, niveles de abstracción, complejidad y flexibilidad. Además, se discuten implementaciones de los patrones Singleton, Builder, Prototype, Factory Method y Abstract Factory, proporcionando ejemplos prácticos y explicaciones sobre su uso en la creación de objetos y gestión de datos. Se enfatiza la importancia de estos patrones en el desarrollo de software orientado a objetos para mejorar la mantenibilidad y extensibilidad del código.
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
Está en la página 1/ 15

Característic

a Factory Method Abstract Factory

Crear objetos de un tipo Crear familias de objetos


específico, pero permitiendo a relacionados o dependientes
subclases decidir qué clase sin especificar sus clases
Propósito concreta instanciar. concretas.

Más bajo que Abstract Factory. Se Más alto que Factory Method.
Nivel de enfoca en un solo tipo de Se enfoca en una familia de
abstracción producto. productos.

Puede ser más complejo de


implementar, especialmente
Generalmente más simple de para familias de productos
Complejidad implementar. grandes.

Permite cierta flexibilidad en la


creación de objetos, pero está Ofrece mayor flexibilidad,
limitada al tipo de producto permitiendo crear diferentes
Flexibilidad definido. familias de productos.

Una fábrica de automóviles que Una fábrica de muebles que


puede crear diferentes modelos puede crear diferentes
de un mismo tipo (ej.: Automóvil, estilos de muebles (ej.:
Ejemplo Camioneta, Camión, etc.) moderno, clásico, etc.)

Factory Method y Abstract Factory


Sofia Tobar y Juan Castaño
Singleton:

La

clase Compra es una clase interna estática anidada dentro de la clase

Compras. Representa un producto individual con su nombre y cantidad.


Se sobrescribe el método toString() heredado de Object para proporcionar
una representación en cadena de texto de un objeto Compra en el formato
"Producto: [producto], Cantidad: [cantidad]".

El Método agregarCompra(String producto, int cantidad), Agrega una nueva


compra a la lista de compras. Crea un nuevo objeto Compra con los datos
proporcionados y lo añade a la lista compras.

El método mostrarCompras(), devuelve una copia de la lista de compras,


permitiendo a otros objetos ver el contenido de la lista sin modificarla
directamente.

Se crean dos referencias a la clase Compras: compraManager1 y


compraManager2. Ambas referencias obtienen la misma instancia única de
Compras llamando al método obtenerInstancia(). Se añaden compras a
ambas referencias. Dado que ambas referencias apuntan a la misma
instancia, las compras se añaden a la misma lista. Se imprimen las listas de
compras de ambas referencias. Como ambas referencias apuntan a la
misma lista, se imprime el mismo contenido.

El código implementa de manera correcta el patrón Singleton en la clase


Compras. Esto garantiza que haya una única lista de compras en toda la
aplicación, lo cual es útil en situaciones donde se necesita un punto de
acceso global a un conjunto de datos compartido.

El código presentado implementa de manera efectiva el patrón Singleton


para gestionar una lista de compras compartida. Al comprender los
fundamentos del patrón y sus implicaciones, podrás tomar decisiones
informadas sobre su uso en tus propios proyectos.

Builder:
Creación de un objeto Coche: Se crea una nueva instancia del Builder. Se
utilizan los métodos set para configurar los atributos del coche. Se llama al
método build() para crear el objeto Coche. Se imprime el objeto Coche en la
consola utilizando System.out.println(). Esto invocará automáticamente el
método toString() del objeto.

El patrón Builder, implementado en las clases Coche y Coche.Builder,


proporciona una forma flexible y legible de crear objetos complejos. Al
separar la construcción del objeto de su uso, se mejora la mantenibilidad y
la extensibilidad del código.

El patrón Builder es una herramienta valiosa en el desarrollo de software


orientado a objetos. Al comprender los principios detrás de este patrón,
puedes crear código más limpio, flexible y mantenible.

El patrón Builder es una herramienta versátil que puede ser aplicada en una
amplia variedad de escenarios de desarrollo de software. Al comprender los
principios fundamentales de este patrón, podrás tomar decisiones
informadas sobre su uso en tus propios proyectos.
Prototype:
El código define una clase llamada Venta que representa una venta
individual. Esta clase se encuentra dentro de un paquete llamado Clase1.

Atributos
nombreCliente: Un String que almacena el nombre del cliente.
producto: Un String que almacena el nombre del producto vendido.
cantidad: Un int que indica la cantidad del producto vendida.
precio: Un double que representa el precio unitario del producto.

El constructor de la clase Venta inicializa los atributos de un objeto Venta


con los valores proporcionados como argumentos. Implementa la interfaz
Cloneable<Venta>: Esto indica que los objetos de tipo Venta pueden ser
clonados. Retorna una nueva instancia de Venta: Crea una nueva instancia
de Venta y copia los valores de los atributos del objeto original a la nueva
instancia.

La clase Venta parece ser parte de un sistema de gestión de ventas. Su


objetivo principal es encapsular la información relevante de una venta
individual, como el cliente, el producto, la cantidad y el precio.

La clase Venta proporciona una representación básica de una venta y puede


ser utilizada como punto de partida para construir un sistema de gestión de
ventas más complejo.
Factory Method (Código):
Primero se define la interfaz Pizza, que declara dos métodos: getNombre() y
getPrecio(). Esta interfaz actúa como un contrato que garantiza que todas
las clases que la implementen provean estos métodos. Luego tenemos tres
clases concretas (PizzaPepperoni, PizzaVegetariana, y PizzaHawaiana) que
implementan la interfaz Pizza. Cada clase proporciona su propia
implementación de los métodos getNombre() y getPrecio() para representar
diferentes tipos de pizzas.

La clase abstracta PizzaFactory define un método abstracto crearPizza(). La


idea es que cada subclase concreta de PizzaFactory proporcionará su propia
implementación de este método para crear un tipo específico de pizza. Cada
una de las clases concretas (PizzaPepperoniFactory,
PizzaVegetarianaFactory, PizzaHawaianaFactory) extiende la clase abstracta
PizzaFactory y sobrescribe el método crearPizza() para devolver una
instancia específica de Pizza (PizzaPepperoni, PizzaVegetariana, o
PizzaHawaiana).

En la clase principal TiendaDePizzas, se crean fábricas específicas para cada


tipo de pizza (PizzaPepperoniFactory, PizzaVegetarianaFactory, y
PizzaHawaianaFactory). Luego, se utilizan estas fábricas para crear
instancias de pizzas específicas. Finalmente, se imprimen los detalles de
cada pedido (nombre y precio de la pizza).

El “Factory Method” es un patrón de diseño creacional que define una


interfaz para crear objetos en una clase base, pero permite que las
subclases cambien el tipo de objeto que se crea. En este caso, la interfaz
PizzaFactory es la base, y las subclases concretas deciden qué tipo de Pizza
se va a crear. Esto proporciona flexibilidad y desacopla el código,
permitiendo que el tipo de objeto que se crea varíe sin modificar el código
que usa esas fábricas.
Abstract Factory (Código):
La clase VentaDeCasas es el punto de entrada de la aplicación y demuestra
cómo se utiliza el patrón Abstract Factory para crear objetos de tipo Casa.

Se instancia un objeto de la clase FábricaDeCasasConcreta, que es la


implementación concreta de la fábrica abstracta. Se obtienen las fábricas
concretas CasaModernaFactory y CasaTradicionalFactory a través de la
fábrica abstracta. Se utilizan las fábricas concretas para crear instancias de
CasaModerna y CasaTradicional. Finalmente, se imprime por consola la
información de las casas creadas (tipo y precio).

El cliente (clase VentaDeCasas) no está acoplado a las implementaciones


concretas de las casas, sino a la interfaz CasaFactory. Se pueden agregar
nuevos tipos de casas sin modificar el código cliente, simplemente creando
nuevas clases de fábrica y agregándolas a la fábrica abstracta.

Las fábricas abstractas se pueden reutilizar en diferentes contextos. Se


separa la creación de objetos de su uso, lo que facilita el mantenimiento y la
modificación del código.

El código implementa de manera efectiva el patrón Abstract Factory,


proporcionando una estructura clara y flexible para la creación de objetos de
tipo Casa. Este patrón resulta especialmente útil cuando se necesita crear
familias de objetos relacionados y se desea mantener un alto grado de
desacople y reutilización.

También podría gustarte