Presentacion de diseño Patron Abstract Factory explicación fácil.pptx
sosocardozo17
2 views
20 slides
Oct 28, 2025
Slide 1 of 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
About This Presentation
Patrón Abstract Factory explicado con minecraft
Size: 14.46 MB
Language: es
Added: Oct 28, 2025
Slides: 20 pages
Slide Content
Abstract Factory Cardozo Sofia Mansilla Manuel
¿Qué es Abstract Factory? Es un patrón de diseño creacional que provee una interfaz para crear familias de objetos relacionados o dependientes , sin especificar sus clases concretas. Su objetivo es mantener coherencia entre objetos que pertenecen al mismo contexto , asegurando que el cliente pueda crear conjuntos de objetos compatibles entre sí.
En Minecraft, el juego genera automáticamente los elementos de cada bioma: bloques, enemigos y recursos. Esto refleja el patrón Abstract Factory, que crea familias de objetos coherentes entre sí, garantizando que todo lo que se genere pertenezca al mismo contexto.
En el Overworld, que es el bioma inicial, encontramos bloques de pasto, árboles, agua, carbón y enemigos como zombis. Toda combina con ese entorno natural. Cuando construimos un portal con obsidiana y lo encendemos con pedernal y acero, entramos al Nether. Automáticamente cambia todo: El cielo, los bloques, los enemigos y los recursos. En este bioma hay lava, roca del Nether, Cuarzo del Nether, y enemigos como Blazes o Ghasts. Si activamos el portal con Ojos de Ender, el juego nos lleva a un nuevo bioma: el End. Allí aparecen Endermen, el Dragón del End, el terreno se compone de End Stone, y hay plantas de Chorus que al comerlas te teletransportan. Todo esto forma otra familia coherente de objetos, propia de esa dimensión.
¿Qué problema viene a resolver? Pongámonos en situación…
Selecting visual aids Enhancing your presentation Minecraft está a punto de lanzar una nueva versión, y necesita programadores para crear los mundos del juego. Llama a tres y a cada una le asigna una tarea específica: Uno se encargará de los bloques, otra de los enemigos, y otra de los recursos. Hasta ahí todo bien... pero pasó algo: Los programadores estaban tan emocionados porque Minecraft era su juego favorito, que no esperaron a reunirse con sus equipos, para comenzar a trabajar.
Rodrigo: Fabrica de Bloques Programó su módulo para crear los bloques del terreno. Michal: Fabrica de Enemigos Luis: Fabrica de Recursos Lo probó, y funcionaba perfectamente: cada vez que ejecutaba su código, el sistema devolvía un bloque válido. Programó su módulo para crear los enemigos del juego . Lo probó, y funcionaba perfectamente: cada vez que ejecutaba su código, el sistema devolvía un enemigo válido. programó su módulo para crear los recursos del juego. Lo probó, y andaba perfecto: cada vez que lo ejecutaba, el sistema devolvía un recurso válido.
Cada uno, seguro de su módulo, llegó el día de reunirlos y generar el primer mundo completo. Todo parecía ir bien… hasta que el sistema se ejecutó por primera vez. En ese momento se dieron cuenta de que los tres habían cometido el mismo error: cada módulo estaba bien hecho, pero ninguno sabía en qué mundo estaba trabajando. Esto refleja un problema de integración sin contexto común: Los componentes funcionan de forma aislada, pero al no tener una fábrica que los coordine, el resultado final rompe la coherencia del sistema. Así descubrieron que no bastaba con que el código funcione: También debía funcionar en conjunto.
Solución: Abstract Factory En lugar de implementar fábricas independientes por tipo de objeto. Este patrón propone organizar la creación de objetos a partir de familias completas que comparten un mismo contexto. De esta forma, en lugar de delegar cada tipo a una fábrica distinta y sin coordinación, se define una fábrica por mundo o entorno, encargada de generar todos los elementos coherentes entre sí dentro de ese contexto. Por ejemplo, en el caso de Minecraft: OverworldFactory crea todos los componentes pertenecientes al Overworld (bloques de pasto, zombis, carbón). NetherFactory produce los del Nether (lava, Blazes, cuarzo). EndFactory genera los del End (End Stone, Endermen, Chorus Fruit). Esto garantiza que cada conjunto de objetos creados sea internamente consistente, evitando la mezcla entre elementos de distintos mundos y asegurando la coherencia visual, lógica y estructural del sistema.
Abstract Factory Interfaz que define qué productos puede crear una familia: crearBloque(), crearEnemigo(), crearRecurso(). Concrete Factories Implementan la interfaz para un mundo específico: OverworldFactory, NetherFactory, EndFactory. Abstract Products Definen las interfaces genéricas de cada tipo de objeto que el sistema puede crear (por ejemplo, TerrainBlock, EnemyMob, Resource). Concrete Products Son las implementaciones específicas de cada categoría dentro de un mundo determinado. Client Es el componente que usa las fábricas abstractas. No conoce las clases concretas, solo invoca los métodos definidos por la interfaz. Componentes
Estructura:
Esctructura: Cómo funciona Fábrica abstracta (IFabricaMinecraft): Define los métodos para crear las familias de objetos (crearBloque(), crearEnemigo(), crearRecurso()), asegurando que todas las fábricas sigan el mismo contrato. Fábricas concretas: Cada fábrica representa un mundo del juego. FabricaOverworld : crea BloquePasto, Zombie y Carbon. FabricaNether : crea BloqueLava, Blaze y Cuarzo. FabricaEnd : crea BloqueEnd, Enderman y FrutaCoral. Garantizan coherencia entre los objetos de un mismo entorno.
Productos abstractos: Definen las categorías generales: BloqueTerreno, Enemigo, Recurso. Permiten que cada fábrica implemente su propia versión sin perder compatibilidad. Productos concretos: Implementan las variantes específicas de cada mundo (por ejemplo, Zombie o Blaze). Cliente: El generador de mundos. No crea objetos directamente, sino que usa una fábrica concreta para obtener un conjunto coherente de elementos.
Implementación:
Cuándo usar Abstract Factory: Cohesión entre familias de objetos Cuando necesitamos asegurar que todos los objetos creados pertenezcan al mismo contexto o “mundo”, evitando combinaciones incoherentes (por ejemplo, un Blaze en el Overworld). Escalabilidad modular Permite agregar nuevos mundos o contextos (Overworld, Nether, End) sin modificar el código existente. Solo se crea una nueva fábrica concreta, manteniendo el principio Open / Closed. Desacoplamiento del cliente El cliente no conoce las clases concretas, solo usa la interfaz común (IFabricaMinecraft), lo que facilita el mantenimiento y la extensión del sistema. Reutilización y consistencia Asegura que cada conjunto de objetos sea coherente y reutilizable como familia, favoreciendo la consistencia visual y lógica en entornos complejos.
Aumento de la Complejidad Requiere definir múltiples interfaces y clases concretas, lo que incrementa la complejidad estructural del sistema. Sobrecarga de Mantenimiento Cada nueva familia de objetos necesita su propia fábrica concreta, aumentando el esfuerzo de actualización y pruebas. Innecesario en Casos Simples Cuando el sistema solo requiere unos pocos tipos de objetos, el uso del patrón puede resultar excesivo o redundante. Dependencia entre Familias Si las familias de objetos no están bien delimitadas, puede generarse acoplamiento no deseado entre fábricas o productos. Consideraciones y Desventajas
Conclusión el patrón Abstract Factory nos permite crear familias completas de objetos que mantienen coherencia entre sí. El cliente no necesita conocer los detalles de cómo se crean: solo usa la interfaz general. De esta forma, el sistema se vuelve más flexible, ordenado y fácil de mantener, porque con solo cambiar la fábrica podemos cambiar todo el entorno sin modificar el código.