//********************************************************************************************************************* //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 pruebaPatronObserver() { //INSTANCIA DE BOMBERO QUE SERA AGREGADO COMO OBSERVADOR DE LAS PLAZAS Y CASAS Bombero objBombero1 = new Bombero(new Espiral()); //INSTANCIA DE CALLE EN COMUN A TODOS LOS LUGARES (PLAZA Y CASAS) Calle objCalle = new Calle(); //SE SETEA EL CAUDAL DE AGUA objCalle.SetCaudalAguaPorMinuto(50); //INSTANCIAS DE PLAZA Y CASAS Plaza objPlaza = new Plaza(objCalle, 4, new ConstructorSimple()); Casa objCasa1 = new Casa(objCalle, 9); Casa objCasa2 = new Casa(objCalle, 9); Casa objCasa3 = new Casa(objCalle, 9); Casa objCasa4 = new Casa(objCalle, 9); Casa objCasa5 = new Casa(objCalle, 9); //AGREGANDO BOMBERO OBSERVADOR A LA PLAZA objPlaza.AgregarObservador(objBombero1); //AGREGANDO BOMBERO OBSERVADOR A LAS CASAS Y CAMBIO DE ESTRATEGIA DE APAGADO DE INCENDIO A ESCALERA objBombero1.setEstrategia(new Escalera()); objCasa1.AgregarObservador(objBombero1); objCasa2.AgregarObservador(objBombero1); objCasa3.AgregarObservador(objBombero1); objCasa4.AgregarObservador(objBombero1); objCasa5.AgregarObservador(objBombero1); //CAMBIO DE ESTADO EN LA PLAZA Y CASAS (SUENA LA ALARMA), NOTIFICA AL BOMBERO OBSERVADOR PARA QUE APAGUE EL INCENDIO objPlaza.Chispa(); objCasa1.Chispa(); objCasa2.Chispa(); objCasa3.Chispa(); objCasa4.Chispa(); objCasa5.Chispa(); }