public static ICuartel crearHeroe(IFabricaDeHeroes fabrica)
        {
            IResponsable responsable = fabrica.crearHeroe();
            ICuartel     cuartel     = fabrica.crearCuartel();
            IHerramienta herramienta = fabrica.crearHerramienta();
            IVehiculo    vehiculo    = fabrica.crearVehiculo();

            cuartel.agregarherramienta(herramienta);
            cuartel.agregarPersonal(responsable);
            cuartel.agregarVehiculo(vehiculo);


            return(cuartel);
        }
        public static void TestAbstractFactory()
        {
            IFabricaDeHeroes fabrica_electricista = new FabricaDeElectricista();
            IFabricaDeHeroes fabrica_policia      = new FabricaDePolicia();
            IFabricaDeHeroes fabrica_bombero      = new FabricaDeBombero();
            IFabricaDeHeroes fabrica_medico       = new FabricaDeMedico();

            ICuartel central_electrica   = crearHeroe(fabrica_electricista);
            ICuartel comisaria           = crearHeroe(fabrica_policia);
            ICuartel cuartel_de_bomberos = crearHeroe(fabrica_bombero);
            ICuartel hospital            = crearHeroe(fabrica_medico);


            IResponsable electricista = central_electrica.getPersonal();

            IResponsable bombero = cuartel_de_bomberos.getPersonal();

            IResponsable medico = hospital.getPersonal();

            IResponsable policia = comisaria.getPersonal();



            Plaza       plaza = new Plaza("luz", 40, 19, 10);
            Esquina     esquina = new Esquina(4);
            Casa        casa = new Casa(1, 40, 5); Calle calle = new Calle(100, 4, 85); casa.Calle = calle;
            IInfartable trauseunte = new Transeunte();

            Console.ForegroundColor = ConsoleColor.Red;
            ((Electricista)electricista).revisar(plaza);


            //guardando electricista al cuartel, su herramienta y vehiculo
            central_electrica.agregarherramienta(((Electricista)electricista).Herramienta);
            central_electrica.agregarVehiculo(((Electricista)electricista).Vehiculo);

            ((Electricista)electricista).Herramienta = null;
            ((Electricista)electricista).Vehiculo    = null;
            central_electrica.agregarPersonal(electricista);
            electricista = null;


            Console.ForegroundColor = ConsoleColor.Green;
            ((Policia)policia).patrullarCalles(esquina);

            //guardando policia al cuartel, su herramienta y vehiculo
            comisaria.agregarherramienta(((Policia)policia).Herramienta);
            comisaria.agregarVehiculo(((Policia)policia).Vehiculo);
            ((Policia)policia).Herramienta = null;
            ((Policia)policia).Vehiculo    = null;
            comisaria.agregarPersonal(policia);
            policia = null;


            Console.ForegroundColor = ConsoleColor.Cyan;
            ((Bombero)bombero).apagarIncendio(casa, casa.Calle);


            //guardando bombero al cuartel, su herramienta y vehiculo
            cuartel_de_bomberos.agregarherramienta(((Bombero)bombero).Herramienta);
            cuartel_de_bomberos.agregarVehiculo(((Bombero)bombero).Vehiculo);
            ((Bombero)bombero).Herramienta = null;
            ((Bombero)bombero).Vehiculo    = null;
            cuartel_de_bomberos.agregarPersonal(bombero);
            bombero = null;

            Console.ForegroundColor = ConsoleColor.DarkYellow;
            ((Medico)medico).atenderInfarto(trauseunte);

            //guardando medico al cuartel, su herramienta y vehiculo
            hospital.agregarherramienta(((Medico)medico).Herramienta);
            hospital.agregarVehiculo(((Medico)medico).Vehiculo);
            ((Medico)medico).Herramienta = null;
            ((Medico)medico).Vehiculo    = null;
            hospital.agregarPersonal(medico);
            medico = null;
        }