//********************************************************************************************************************* //EN ESTA PRUEBA HAY VARIOS PATRONES QUE TRABAJAN EN CONJUNTAMENTE : BUILDER, FACTORY METHOD, DECORATOR, STRATEGY public static void pruebaPatronDecoratorYFactoryMethod() { //PRUEBA DE PATRON DECORATOR EN CONJUNTO CON EL PATRON FACTORY METHOD, AL MOMENTO DE ASIGNAR SECTORES EN LA MATRIZ, SE EVALUA SI PUEDE TENER DECORADOS IEstrategy estrategia = new Escalera(); Bombero objBombero = new Bombero(estrategia); //CALLE CON CAUDAL DE AGUA PARA APAGAR EL INCENDIO Calle objCalle = new Calle(); //EN LA CLASE PLAZA, SE ENCARGA DE CREAR UNA MATRIZ DE SECTORES Y DECORARLOS SEGUN SU PROBABILIDAD ConstructorDesfaborable objConstructor = new ConstructorDesfaborable(); objConstructor.setTemperatura(30); objConstructor.setViento(50); objConstructor.setCantidadPersonas(20); //PASANDOLE EL CONSTRUCTOR CONCRETO DEL PATRON BUILDER Plaza objPlaza = new Plaza(objConstructor); objPlaza.SetSuperficieMetrosCuadrados(9); objCalle.SetCaudalAguaPorMinuto(50); //SE LLAMA AL METODO APAGARINCENDIO() DEL BOMBERO Y SE LE PASA POR PARAMETRO LA CALLE Y EL LUGAR objBombero.ApagarIncendio(objPlaza, objCalle); }
//********************************************************************************************************************* public static void pruebaPatronStrategy() { //ESTRATEGIA DE APAGADO DE INCENDIO (PUEDEN SER APAGADO POR ESCALERA - SECUENCIAL - ESPIRAL) IEstrategy estrategia = new Escalera(); //SE LA PASA POR PARAMETRO AL CONSTRUCTOR DE LA CLASE BOMBERO LA ESTRATEGIA Bombero objBombero = new Bombero(estrategia); //SE CREAN LAS INSTANCIAS DE UNA CALLE Y DE UN LUGAR Plaza objPlaza = new Plaza(new ConstructorSimple()); //SE SETEA EL CAUDAL DE AGUA objPlaza.SetSuperficieMetrosCuadrados(16); Calle objCalle = new Calle(); objCalle.SetCaudalAguaPorMinuto(50); //SE LLAMA AL METODO APAGARINCENDIO() DEL BOMBERO Y SE LE PASA POR PARAMETRO LA CALLE Y EL LUGAR objBombero.ApagarIncendio(objPlaza, objCalle); }
public static void run() { Console.WriteLine("Creando plaza..."); Console.WriteLine("-----------------------------------------------------------"); Director director = new Director(new BuilderMixto()); Calle calle = new Calle("pedriel", 100, 4, 50); Lugar plaza = new Plaza(director, "America", 8, 40, calle); Console.WriteLine(""); Console.WriteLine("Apagando incendio en la Plaza con diferentes dificultades"); Console.WriteLine(""); IStrategyDeApagadoDeIncendio estrategiaDeApagado1 = new Secuencial(); IStrategyDeApagadoDeIncendio estrategiaDeApagado2 = new Escalera(); IStrategyDeApagadoDeIncendio estrategiaDeApagado3 = new Espiral(); Bombero bombero = new Bombero(null, plaza, estrategiaDeApagado1); bombero.apagarIncendio(); }
//********************************************************************************************************************* public static void pruebaPatronIterator() { //ESTRATEGIA DE APAGADO, UN BOMBERO Y UN SECRETARIO QUE RECIBE LA DENUNCIA PARA ASIGNARSELA A UN BOMBERO IEstrategy estrategia = new Escalera(); Bombero objBombero = new Bombero(estrategia); objBombero.setVehiculo(new Ambulancia()); objBombero.setHerramienta(new Manguera()); BomberoSecretario secretario = new BomberoSecretario(objBombero); //INSTANCIAS DE CALLES (SE LE PASA POR PARAMETRO EL CAUDAL DE AGUA DISPONIBLE) Calle calle1 = new Calle(50); Calle calle2 = new Calle(50); Calle calle3 = new Calle(50); Calle calle4 = new Calle(50); Calle calle5 = new Calle(50); Calle calle6 = new Calle(50); // INSTANCIAS DE LUGARES ILugar A = new Plaza(); ILugar B = new Plaza(calle1, 9, new ConstructorSimple()); ILugar C = new Plaza(); ILugar D = new Plaza(); ILugar E = new Plaza(); ILugar F = new Plaza(calle2, 9, new ConstructorSimple()); ILugar G = new Plaza(9, new ConstructorSimple()); ILugar H = new Plaza(9, new ConstructorSimple()); ILugar I = new Plaza(9, new ConstructorSimple()); ILugar J = new Plaza(9, new ConstructorSimple()); //"COMPROBACION DEL PATRON ITERATOR CON DENUNCIASPORTABLERO" //SE AGREGA A LA LISTA DE OBSERVADORES LA DENUNCIATABLERO EN LOS RESPECTIVOS ILUGARES DenunciasPorTablero denuncia1 = new DenunciasPorTablero(); A.AgregarObservador(denuncia1); B.AgregarObservador(denuncia1); C.AgregarObservador(denuncia1); D.AgregarObservador(denuncia1); E.AgregarObservador(denuncia1); F.AgregarObservador(denuncia1); //SE INVOCA EL METODO CHISPA() DE LOS LUGARES B Y F, ESTE PROVOCA EL CAMBIO DE ESTADO Y NOTIFICA AL OBSERVADOR(LA DENUNCIA POR TABLERO) B.Chispa(); F.Chispa(); //SE INVOCA AL METODO ATENDERDENUNCIAS() DEL SECRETARIO EL CUAL RECIBE //LA DENUNCIA Y CONSTRUYE UN ITERADOR PARA QUE ESTE ITERE CADA DENUNCIA secretario.atenderDenuncias(denuncia1); //COMPROBACION DEL PATRON ITERATOR CON DENUNCIASPORWHATSAPP //CREACION DE LISTA ENLAZADA //REFERENCIA DE TIPO MensajeWhatsapp QUE NO CONTIENE NADA MensajeWhatsapp listadenunciaWhatsapp = null; //SE LE ASIGANA UN OBJETO DE TIPO MensajeWhatsapp A TAL REFERENCIA //LAS DENUNCIAS RECIBEN LAS CALLES Y LOS LUGARES POR CONSTRUCTOR PARA EL METODO APAGAR INCENDIO DEL BOMBERO listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(G, calle3), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(H, calle4), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(I, calle5), listadenunciaWhatsapp); //INSTANCIA DE DENUNCIAPORWHATSAPP A LA CUAL SE LE PASA POR PARAMETRO UNA LISTA ENLAZADA DenunciasPorWhatsapp denuncia2 = new DenunciasPorWhatsapp(listadenunciaWhatsapp); secretario.atenderDenuncias(denuncia2); //COMPROBACION DEL PATRON ITERATOR CON DENUNCIASPORMOSTRADOR DenunciasPorMostrador denuncia3 = new DenunciasPorMostrador(new DenunciaDeIncendio(J, calle6)); secretario.atenderDenuncias(denuncia3); }