// PATRÓN ABSTRACT FACTORY - EQUIPOS GAMER
import java.util.Scanner;
// PRODUCTOS ABSTRACTOS
interface Teclado {
void mostrarTeclado();
}
interface Mouse {
void mostrarMouse();
}
interface Monitor {
void mostrarMonitor();
}
// PRODUCTOS CONCRETOS - NIVEL BÁSICO
class TecladoBasico implements Teclado {
@Override
public void mostrarTeclado() {
System.out.println("Teclado básico de membrana");
}
}
class MouseBasico implements Mouse {
@Override
public void mostrarMouse() {
System.out.println("Mouse básico con cable");
}
}
class MonitorBasico implements Monitor {
@Override
public void mostrarMonitor() {
System.out.println("Monitor 60Hz 1080p");
}
}
// PRODUCTOS CONCRETOS - NIVEL INTERMEDIO
class TecladoIntermedio implements Teclado {
@Override
public void mostrarTeclado() {
System.out.println("Teclado mecánico con retroiluminación");
}
}
class MouseIntermedio implements Mouse {
@Override
public void mostrarMouse() {
System.out.println("Mouse gaming con 6 botones");
}
}
class MonitorIntermedio implements Monitor {
@Override
public void mostrarMonitor() {
System.out.println("Monitor 144Hz 1440p");
}
}
// PRODUCTOS CONCRETOS - NIVEL PROFESIONAL
class TecladoProfesional implements Teclado {
@Override
public void mostrarTeclado() {
System.out.println("Teclado mecánico RGB inalámbrico");
}
}
class MouseProfesional implements Mouse {
@Override
public void mostrarMouse() {
System.out.println("Mouse gamer inalámbrico 26000 DPI");
}
}
class MonitorProfesional implements Monitor {
@Override
public void mostrarMonitor() {
System.out.println("Monitor 4K 240Hz 1ms");
}
}
// ABSTRACT FACTORY
interface EquipoGamerFactory {
Teclado crearTeclado();
Mouse crearMouse();
Monitor crearMonitor();
}
// FÁBRICAS CONCRETAS
class EquipoBasicoFactory implements EquipoGamerFactory {
@Override
public Teclado crearTeclado() { return new TecladoBasico(); }
@Override
public Mouse crearMouse() { return new MouseBasico(); }
@Override
public Monitor crearMonitor() { return new MonitorBasico(); }
}
class EquipoIntermedioFactory implements EquipoGamerFactory {
@Override
public Teclado crearTeclado() { return new TecladoIntermedio(); }
@Override
public Mouse crearMouse() { return new MouseIntermedio(); }
@Override
public Monitor crearMonitor() { return new MonitorIntermedio(); }
}
class EquipoProfesionalFactory implements EquipoGamerFactory {
@Override
public Teclado crearTeclado() { return new TecladoProfesional(); }
@Override
public Mouse crearMouse() { return new MouseProfesional(); }
@Override
public Monitor crearMonitor() { return new MonitorProfesional(); }
}
public class Main { // ← ANTES: MainEquiposGamer, AHORA: Main
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("=======================================");
System.out.println(" SISTEMA DE EQUIPOS GAMER");
System.out.println(" PATRÓN ABSTRACT FACTORY");
System.out.println("=======================================");
System.out.println("NIVELES DE EQUIPO:");
System.out.println("1. Básico");
System.out.println("2. Intermedio");
System.out.println("3. Profesional");
System.out.print("\nSeleccione nivel: ");
int opcion = sc.nextInt();
EquipoGamerFactory factory = null;
String nivel = "";
switch (opcion) {
case 1:
factory = new EquipoBasicoFactory();
nivel = "Básico";
break;
case 2:
factory = new EquipoIntermedioFactory();
nivel = "Intermedio";
break;
case 3:
factory = new EquipoProfesionalFactory();
nivel = "Profesional";
break;
default:
System.out.println("Nivel no válido.");
sc.close();
return;
}
Teclado teclado = factory.crearTeclado();
Mouse mouse = factory.crearMouse();
Monitor monitor = factory.crearMonitor();
System.out.println("\n===== EQUIPO " + nivel.toUpperCase() + " CREADO =====");
teclado.mostrarTeclado();
mouse.mostrarMouse();
monitor.mostrarMonitor();
sc.close();
}
}
To embed this program on your website, copy the following code and paste it into your website's HTML: