0% encontró este documento útil (0 votos)
27 vistas6 páginas

Ejemplo de uso del patrón en Java

El documento presenta un ejemplo de código Java que implementa el patrón de diseño Abstract Factory. Define clases abstractas Automovil y Scooter con subclases concretas para vehículos eléctricos y de gasolina. También define una interfaz FabricaVehiculo con implementaciones separadas para cada tipo de vehículo, permitiendo que un catálogo de vehículos sea independiente del tipo concreto de vehículo.
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)
27 vistas6 páginas

Ejemplo de uso del patrón en Java

El documento presenta un ejemplo de código Java que implementa el patrón de diseño Abstract Factory. Define clases abstractas Automovil y Scooter con subclases concretas para vehículos eléctricos y de gasolina. También define una interfaz FabricaVehiculo con implementaciones separadas para cada tipo de vehículo, permitiendo que un catálogo de vehículos sea independiente del tipo concreto de vehículo.
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

Ejemplo en Java

Presentamos a continuacin un pequeo ejemplo de uso del patrn escrito en


Java. El cdigo Java correspondiente a la clase abstracta Automovil y sus
subclases aparece a continuacin. Es muy sencillo, describe los cuatro atributos
de los automviles as como el mtodo mostrarCaracteristicas que permite
visualizarlas.
public abstract class Automovil
{
protected String modelo;
protected String color;
protected int potencia;
protected double espacio;
public Automovil(String modelo, String color, int
potencia, double espacio)
{
[Link] = modelo;
[Link] = color;
[Link] = potencia;
[Link] = espacio;
}
public abstract void mostrarCaracteristicas();
}
public class AutomovilElectricidad extends Automovil
{
public AutomovilElectricidad(String modelo, String
color, int potencia, double espacio)
{
super(modelo, color, potencia, espacio);
}
public void mostrarCaracteristicas()
{
[Link](

"Automovil electrico de modelo: " + modelo +


11
de color: " + color + " de potencia: " +
potencia + " de espacio: 11 + espacio);
}
}
public class AutomovilGasolina extends Automovil
{
public AutomovilGasolina(String modelo, String
color, int potencia, double espacio)
{
super(modelo, color, potencia, espacio);
}
public void mostrarCaracteristicas()
{
[Link](
"Automovil de gasolina de modelo: " + modelo +
" de color: " + color + " de potencia: " +
potencia + " de espacio: " + espacio);
}
}
El cdigo Java correspondiente a la clase abstracta Scooter y sus subclases
aparece a continuacin. Es similar al de los automviles, salvo por el atributo
espacio que 110 existe para las scooters.
using System;
public abstract class Scooter
{
protected String modelo;
protected String color;
protected int potencia;
public Scooter(String modelo, String color, int potencia)
{

[Link] = modelo;
[Link] = color;
[Link] = potencia;
}
public abstract void mostrarCaracteristicas()
}
public class ScooterElectricidad extends Scooter
{
public ScooterElectricidad(String modelo, String color,
int potencia)
{
super(modelo, color, potencia);
}
public void mostrarCaracteristicas()
{
[Link]("Scooter electrica de modelo: " +
modelo + " de color: " + color +

de potencia: " + potencia);


}
public class ScooterGasolina extends Scooter
{
public ScooterGasolina(String modelo, String color,
int potencia)
{
super(modelo, color, potencia);
}
public void mostrarCaracteristicas()
{
[Link]("Scooter de gasolina de modelo: "
modelo + " de color: " + color +

de potencia: " + potencia);


}

}
Ahora podemos introducir la interfaz FabricaVehiculo y sus dos clases de
implementacin, una para cada familia (elctrico/gasolina). Es fcil darse cuenta
de que slo las clases de implementacin utilizan las clases concretas de los
vehculos.
public interface FabricaVehiculo
{
Automovil creaAutomovil(String modelo, String color,
int potencia, double espacio);
Scooter creaScooter(String modelo, String color, int
potencia);
}
public class FabricaVehiculoElectricidad implements
FabricaVehiculo
{
public Automovil creaAutomovil(String modelo, String
color, int potencia, double espacio)
{
return new AutomovilElectricidad(modelo, color,
potencia, espacio);
}
public Scooter creaScooter(String modelo, String
color, int potencia)
{
return new ScooterElectricidad(modelo, color,
potencia);
}
}
public class FabricaVehiculoGasolina implements
FabricaVehiculo
{

public Automovil creaAutomovil(String modelo, String


color, int potencia, double espacio)
{
return new AutomovilGasolina(modelo, color,
potencia, espacio);
}
public Scooter creaScooter(String modelo, String
color, int potencia)
{
return new ScooterGasolina(modelo, color, potencia)
}
}
Por ltimo, se presenta el cdigo fuente Java del cliente de la fbrica, a saber el
catlogo que es. en nuestro ejemplo, el programa principal. Por motivos de
simplicidad, el catlogo solicita al comienzo la fbrica que se quiere utilizar
(electricidad o gasolina). Esta fbrica debera proporcionarse como parmetro al
catlogo.
El resto del programa es totalmente independiente de la familia de objetos,
respetando el objetivo del patrn Abstract Factory.
import [Link].*;
public class Catalogo
{
public static int nAutos = 3;
public static int nScooters =2;
public static void main(String[] args)
{
Scanner reader = new Scanner([Link]);
FabricaVehiculo fabrica;
Automovil[] autos = new Automovil[nAutos];
Scooter!] scooters = new Scooter [nScooters];
[Link]("Desea utilizar " +
"vehiculos elctricos (1) o a gasolina (2):");

String eleccin = [Link]();


if ([Link]("1"))
{
fabrica = new FabricaVehiculoElectricidad();
}
else
{
fabrica = new FabricaVehiculoGasolina();
}
for (int index = 0; index < nAutos; index++)
autos[index] = [Link]("estandar
"amarillo", 6+index, 3.2);
for (int index = 0; index < nScooters; index++)
scooters[index] = [Link]("clasico
"rojo", 2+index);
for (Automovil auto: autos)
[Link]();
for (Scooter scooter: scooters)
[Link]();
}
}

También podría gustarte