0% encontró este documento útil (0 votos)
192 vistas16 páginas

04 Patron Abstract Factory

El patrón Abstract Factory proporciona una interfaz para crear familias de objetos relacionados sin especificar sus clases concretas. Un ejemplo es un sistema de venta de vehículos que crea objetos de vehículos eléctricos o de gasolina a través de fábricas abstractas y concretas sin conocer las clases específicas. Esto permite añadir nuevas familias de vehículos fácilmente sin cambios en el código cliente.
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
192 vistas16 páginas

04 Patron Abstract Factory

El patrón Abstract Factory proporciona una interfaz para crear familias de objetos relacionados sin especificar sus clases concretas. Un ejemplo es un sistema de venta de vehículos que crea objetos de vehículos eléctricos o de gasolina a través de fábricas abstractas y concretas sin conocer las clases específicas. Esto permite añadir nuevas familias de vehículos fácilmente sin cambios en el código cliente.
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 PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

Patrones creacionales

Abstract Factory
Ing. Mauricio Lara
Patrón Abstract Factory
Patrón Abstract Factory

• Objetivo: Creación de objetos


agrupados en familias sin tener que
conocer las clases concretas
destinadas a la creación de estos
objetos.
Patrón Abstract Factory - Ejemplo

• Un sistema de venta de vehículos gestiona vehículos que funcionan con gasolina y


vehículos eléctricos.
• Esta gestión está delegada en el objeto Catálogo encargado de crear tales objetos.
• Para cada producto, disponemos de una clase abstracta, de una subclase concreta
derivando una versión del producto que funciona con gasolina y de una subclase
concreta derivando una versión del producto que funciona con electricidad.
• Por ejemplo, en la figura siguiente, para el objeto Scooter, existe una clase
abstracta Scooter y dos subclases concretas ScooterElectricidad y ScooterGasolina.
Patrón Abstract Factory - Ejemplo
Patrón Abstract Factory - Ejemplo

• El objeto Catálogo puede utilizar estas subclases concretas para instanciar los
productos.
• Si fuera necesario incluir nuevas clases de familias de vehículos (diésel o mixto
gasolina-eléctrico), las modificaciones a realizar en el objeto Catálogo pueden ser
bastante pesadas.
• El patrón Abstract Factory resuelve este problema introduciendo una interfaz
FábricaVehículo que contiene la firma de los métodos para definir cada producto.
• El tipo devuelto por estos métodos está constituido por una de las clases
abstractas del producto. De este modo el objeto Catálogo no necesita conocer las
subclases concretas y permanece desacoplado de las familias de producto.
Patrón Abstract Factory - Ejemplo

• Se incluye una subclase de implementación de FábricaVehículo por cada familia de


producto, a saber las subclases FábricaVehículoElectricidad y FábricaVehículoGasolina.
• Dicha subclase implementa las operaciones de creación del vehículo apropiado para la
familia a la que está asociada.
• El objeto Catálogo recibe como parámetro una instancia que responde a la interfaz
FábricaVehículo, es decir o bien una instancia de FábricaVehículoElectricidad, o bien una
instancia de FábricaVehículoGasolina.
• Con dicha instancia, el catálogo puede crear y manipular los vehículos sin tener que
conocer las familias de vehículos y las clases concretas de instanciación correspondientes.
Patrón Abstract Factory – Estructura genérica del patrón
Patrón Abstract Factory - Participantes

Los participantes del patrón son los siguientes:


• FábricaAbstracta (FábricaVehículo) es una interfaz que define las firmas de los
métodos que crean los distintos productos.
Patrón Abstract Factory - Participantes

• FábricaConcreta1, FábricaConcreta2 (FábricaVehículoElectricidad,


FábricaVehículoGasolina) son las clases concretas que implementan los métodos
que crean los productos para cada familia de producto. Conociendo la familia y el
producto, son capaces de crear una instancia del producto para esta familia.
Patrón Abstract Factory - Participantes

• ProductoAbstractoA y ProductoAbstractoB (Scooter y Automóvil) son las clases


abstractas de los productos independientemente de su familia.
• Las familias se introducen en las subclases concretas.
Patrón Abstract Factory - Participantes

• Cliente es la clase que utiliza la interfaz de FábricaAbstracta.


Patrón Abstract Factory - Colaboraciones

• La clase Cliente utiliza una instancia de una de las fábricas concretas para crear sus
productos a partir de la interfaz FábricaAbstracta.
• Normalmente sólo es necesario crear una instancia de cada fábrica concreta, que
puede compartirse por varios clientes.
Patrón Abstract Factory – Dominio de uso

El patrón se utiliza en los siguientes dominios:


• Un sistema que utiliza productos necesita ser independiente de la forma en que se
crean y agrupan estos productos.
• Un sistema está configurado según varias familias de productos que pueden
evolucionar.
Patrón Abstract Factory – Codificación

El código correspondiente a la clase abstracta Automovil y sus subclases lo pueden


encontrar en el archivo adjunto de esta lección, en el aula virtual. Es muy sencillo,
describe los cuatro atributos de los automóviles así como el método
mostrarCaracteristicas que permite visualizarlas.

También podría gustarte