public interface AbstractFactory
Smartphone CrearSmartphone();
public interface Smartphone
void MostrarCaracteristicas();
void MostrarCaracteristicas();
public class GalaxyS20 : Smartphone
public void MostrarCaracteristicas()
Console.WriteLine("Modelo: Samsung Galaxy S20");
Console.WriteLine("Características: Pantalla AMOLED de 6.2\", Snapdragon 865, 8GB RAM, 128GB de almacenamiento");
public class IPhone11 : Smartphone
public void MostrarCaracteristicas()
Console.WriteLine("Modelo: iPhone 11");
Console.WriteLine("Características: Pantalla LCD de 6.1\", Apple A13 Bionic, 4GB RAM, 64GB de almacenamiento");
public class GalaxyTabS6 : Tablet
public void MostrarCaracteristicas()
Console.WriteLine("Modelo: Samsung Galaxy Tab S6");
Console.WriteLine("Características: Pantalla Super AMOLED de 10.5\", Snapdragon 855, 6GB RAM, 128GB de almacenamiento");
public class IPadPro : Tablet
public void MostrarCaracteristicas()
Console.WriteLine("Modelo: iPad Pro");
Console.WriteLine("Características: Pantalla Liquid Retina de 11\", Apple A12Z Bionic, 6GB RAM, 128GB de almacenamiento");
public class SamsungFactory : AbstractFactory
public Smartphone CrearSmartphone()
public Tablet CrearTablet()
return new GalaxyTabS6();
public class AppleFactory : AbstractFactory
public Smartphone CrearSmartphone()
public Tablet CrearTablet()
public static void Main()
Console.WriteLine("Bienvenido a la tienda de celulares.");
Console.WriteLine("Por favor selecciona la marca:");
Console.WriteLine("1. Samsung");
Console.WriteLine("2. Apple");
int marca = Convert.ToInt32(Console.ReadLine());
fabrica = new SamsungFactory();
fabrica = new AppleFactory();
Console.WriteLine("Marca inválida.");
FachadaTiendaCelulares fachada = new FachadaTiendaCelulares(fabrica);
Console.WriteLine("Por favor selecciona el tipo de dispositivo:");
Console.WriteLine("1. Tablet");
Console.WriteLine("2. Celular");
int tipo = Convert.ToInt32(Console.ReadLine());
fachada.OrdenarSmartphone();
Console.WriteLine("Selección inválida.");
Console.WriteLine("¡Gracias por comprar en nuestra tienda!");
public class FachadaTiendaCelulares
private AbstractFactory fabrica;
public FachadaTiendaCelulares(AbstractFactory fabrica)
public void OrdenarSmartphone()
Smartphone smartphone = fabrica.CrearSmartphone();
smartphone.MostrarCaracteristicas();
Console.WriteLine("¡Producto ordenado! Gracias por comprar en nuestra tienda.");
public void OrdenarTablet()
Tablet tablet = fabrica.CrearTablet();
tablet.MostrarCaracteristicas();
Console.WriteLine("¡Producto ordenado! Gracias por comprar en nuestra tienda.");