//********************************************************************************************************************* //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 pruebaPatronChainOfResponsability() { //PATRON CHAIN OF RESPONSABILITY //INSTANCIAS DE CALLES (SE LE PASA POR PARAMETRO EL CAUDAL DE AGUA DISPONIBLE) Calle calle3 = new Calle(50); Calle calle4 = new Calle(50); Calle calle5 = new Calle(50); //INSTANCIAS DE LUGARES ILugar G = new Plaza(9, new ConstructorSimple()); ILugar H = new Plaza(9, new ConstructorSimple()); ConstructorDesfaborable constructorConcreto = new ConstructorDesfaborable(); constructorConcreto.setCantidadPersonas(3); constructorConcreto.setTemperatura(30); constructorConcreto.setViento(50); ILugar I = new Plaza(9, constructorConcreto); //PATRON ITERATOR CON DENUNCIASPORWHATSAPP //CREACION DE LISTA ENLAZADA //REFERENCIA DE TIPO MensajeWhatsapp QUE NO CONTIENE NADA MensajeWhatsapp listadenunciaWhatsapp = null; //DENUNCIAS DE INCENDIO listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(G, calle3), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(H, calle4), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(I, calle5), listadenunciaWhatsapp); //DENUNCIAS NUEVAS DE LA CONSIGNA NUMERO 12 (CHAIN OF RESPONSABILITY) //DOS DENUNCIAS DE INFARTOS listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeInfarto(new Transeunte()), listadenunciaWhatsapp); Passerby objPasserby = new Passerby(1.2, 1.2, 1.2); IInfartable infartable = new IInfartableAdapter(objPasserby); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeInfarto(infartable), listadenunciaWhatsapp); //TRES DENUNCIAS POR ROBO listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp); //CINCO DENUNCIAS POR LAMPARAS QUEMADAS listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp); listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp); //INSTANCIA DE DENUNCIAPORWHATSAPP A LA CUAL SE LE PASA POR PARAMETRO UNA LISTA ENLAZADA DenunciasPorWhatsapp denuncia2 = new DenunciasPorWhatsapp(listadenunciaWhatsapp); //CADENA DE HEROES Manejador m = new Bombero(null, new Escalera(), new Manguera(), new Autobomba()); m = new Policia(m, new OrdenVozdeAlto(), new Pistola(), new Patrullero()); m = new Medico(m, new ProtocoloA(), new Desfibrilador(), new Ambulancia()); m = new Electricista(m, new Buscapolo(), new Camioneta()); //SE LE PASA COMO PARAMETRO UNA CADENA DE MANEJADORES AL OPERADOR Operador911 objOperador = new Operador911(m); objOperador.atenderDenuncias(denuncia2); }
//********************************************************************************************************************* public static void pruebaPatronBuilder() { //CONSTRUCTOR CONCRETO DESFAVORABLE DE BUILDER ConstructorDesfaborable constructor1 = new ConstructorDesfaborable(); constructor1.setCantidadPersonas(5); constructor1.setTemperatura(40); constructor1.setViento(90); //CONSTRUCTOR CONCRETO FAVORABLE DE BUILDER ConstructorFavorable constructor2 = new ConstructorFavorable(); constructor2.setIntLluvia(15); //CONSTRUCTOR CONCRETO MIXTO DE BUILDER ConstructorMixto constructor3 = new ConstructorMixto(); constructor3.setLluvia(15); //CONSTRUCTOR CONCRETO SIMPLE ConstructorSimple constructor4 = new ConstructorSimple(); //ASIGNANADO UN CONSTRUCTOR CONCRETO Y UN DIRECTOR A CADA INSTANCIA DE PLAZA Plaza objPlaza1 = new Plaza(constructor1); objPlaza1.SetSuperficieMetrosCuadrados(9); Plaza objPlaza2 = new Plaza(constructor2); objPlaza2.SetSuperficieMetrosCuadrados(9); Plaza objPlaza3 = new Plaza(constructor3); objPlaza3.SetSuperficieMetrosCuadrados(9); Plaza objPlaza4 = new Plaza(constructor4); objPlaza4.SetSuperficieMetrosCuadrados(9); //INSTANCIA DE CALLE CON SU CAUDAL DE AGUA DISPONIBLE Calle objCalle = new Calle(50); //INSTANCIA DE BOMBERO, SETEANDOLE UNA ESTRATEGIA DE APAGADO Bombero objBombero = new Bombero(new Secuencial()); Console.WriteLine("APAGANDO INCENDIO CON CIRCUNSTANCIAS DESFABORABLES"); objBombero.ApagarIncendio(objPlaza1, objCalle); Console.WriteLine(); Console.WriteLine("APAGANDO INCENDIO CON CIRCUNSTANCIAS FABORABLES"); objBombero.ApagarIncendio(objPlaza2, objCalle); Console.WriteLine(); Console.WriteLine("APAGANDO INCENDIO CON CIRCUNSTANCIAS MIXTAS"); objBombero.ApagarIncendio(objPlaza3, objCalle); Console.WriteLine(); Console.WriteLine("APAGANDO INCENDIO CON CIRCUNSTANCIAS NORMALES"); objBombero.ApagarIncendio(objPlaza4, objCalle); Console.WriteLine(); }