Tome un curso en Udemy de "Patrones de diseño en Java" y dejame decirte que ese curso no te llega ni a los talones, eres muy bueno explicando, practicamente me guie de tus videos en todo el curso... Muy bueno, felicitaciones y te deseo lo mejor.
Fachada oculta la implementación(lógica) y Decorator agrega funcionalidad extra al objeto sin necesidad de modificar este mismo(es decir no es necesario extender de otro objeto para agregarle alguna funcionalidad)
Quizás el ejemplo no fue el más idóneo pero facade sirve para llamar a otra funcionalidad...es como un "puente o bypass" que sirve para desacople de código
@@MitoCode Gracias! Me quedo mas claro. Aprovecho de felicitarte y agradecerte por este curso ya que es muy dificil encontrar informacion tan clara de los patrones en internet
Me costo trabajo entender la diferencia entre Proxy y Fecade, pero hay va lo que yo entendí, (a ver si no estoy mal).... supongamos que ya tienes tu clase ´CuentaFachada´ tipo Fecade trabajando bien en productivo, y vas a liberar una nueva versión, ya lista y probada, el detalle esa en que es una liberación delicada y que es posible que tu nueva versión falle por el cambio de ambiente por lo que necesitas hacer un posible rollback de manera muy rápida, para eso, a tu clase Fecade a su vez le haces una clase Proxy llamada´CuentaProxy´ y esta llama a la ´CuentaFachada´ creas tu backup llamado ´CuentaFachadaBackup´ y así ya que liberes y vez que ha fallado la nueva versión puedes dejar todo como estaba cambiando una sola linea de código... ejemplo algo bobo, los respaldos también podría ser algo como: ´CuentaFachadaBanco1´ ´CuentaFachadaBanco2´ ´CuentaFachadaPCLocal´, ´CuentaFachadaPruebas´, ´CuentaFachadaDesarrollo´, mas ejemplos bobos, pero esa fue la idea que entendí
Esta aplicando un singleton(instancia única) para no crear objetos de más, aparte oculta la funcionalidad verdadera del objeto pudiendo también agregar try/catch, loggers etc sin modificar su verdadera lógica. Saludos!
Proxy es más que todo para acceder a objetos y decorator para extender funcionalidades stackoverflow.com/questions/18618779/differences-between-proxy-and-decorator-pattern
Proxy es básicamente sustituto o marcador de posición para otro objeto. Un proxy controla el acceso al objeto original, permitiéndole realizar algo antes o después de que la solicitud llegue al objeto original. Por ejemplo un objeto DB puede ser sustituido por otro objeto DB_Proxy pero esté tiene una funcionalidad de caché, sí en realidad es necesario llamar al objeto original DB el DB_proxy permite el paso, en caso contrario retorna el caché y no sobrecarga el objeto DB ( Ejemplo muy simple )
@@MitoCode Son muy similares. Veamos si entendi. Proxy lo tengo que usar para fines de obtener informacion de mi programa/app, como un LOG, para saber por donde va mi programa y que esta haciendo. Ahora, si yo le agrego funcionalidad, osea que ademas de darme info antes o dsps de ejecutar el codigo de un metodo de la INSTANCIA de una clase X, le pido que agregue alguna funcion, eso ya se convertiria en un decorator... Si estoy en lo correcto, es muy sutil la diferencia y se presta para confucion. Slds y muy bueno el tuto. Lo estoy haciendo en paralelo con otro de patrones y este patron no esta en el otro curso. EXCELENTE CURSO.
Pregunta, este patron proxy no es similar al patron facade, en la idea de un intermediario con el que el cliente interactua primero? Se me hicieron muy similares, es como que me cuesta ver porque existe el patron proxy si se puede alcanzar lo mismo con el facade
El patron de diseño Facade busca reducir el acoplamiento entre clases. En lugar de tener tu clase acoplada a multiples funciones que hacen algo, mejor te unes a una facade que tiene ese acoplamiento. Lo que haces es ubicar todo ese acoplamiento en un unico punto y buscar también la reutilización
quiero pensar que con factory hay mas de 1 objeto, y con Proxy siempre habrá solo 1 objeto, ya que al preguntar si ya existe el objeto, se lo entrega, en factory crea uno nuevo, pienso que proxy es como facotory combinado con singleton, pero es mi idea, o lo que entendí en el video.
Solo Le faltaria a tu codigo en la clase Proxy ,dentro de los metodos que implementa que si la cuenta real es nula a cual clase de implementacion habria que hacer referencia . Segun deberia de ser a la que se le pasa por parametro en el constructor. Pero creo que ya se complica . Seria mejor
Hola. Una consulta. 1) al agregarle a la clase proxy la posibilidad de loguear las operaciones, no seria un decorator, ya que le estas agregando funcionalidades?. 2) En la clase proxy le diste la posibilidad de pasarle un objeto de tipo: new CuentaBancoBImpl(), pero dentro de los metodos del proxy estas instanciando new CuentaBancoAImpl(). No hay un error aqui?
En cuanto a tú pregunta 2 en realidad en la clase CuentaProxy nunca se cumpliría la condición "cuentaReal == null", debido a que al agregar el constructor y pasarle como parámetro la implementación, el atributo "cuentaReal" siempre será diferente de nulo.
Tome un curso en Udemy de "Patrones de diseño en Java" y dejame decirte que ese curso no te llega ni a los talones, eres muy bueno explicando, practicamente me guie de tus videos en todo el curso... Muy bueno, felicitaciones y te deseo lo mejor.
Que gran trabajo!!! saludos
Qué diferecnia tiene con Fachada? y con Decorator?, No estarías implementando los dos juntos?
Fachada oculta la implementación(lógica) y Decorator agrega funcionalidad extra al objeto sin necesidad de modificar este mismo(es decir no es necesario extender de otro objeto para agregarle alguna funcionalidad)
¿No seria lo mismo que realiza el patron Facade? Te agradeceria si me pudieras explicar la diferencia.
Quizás el ejemplo no fue el más idóneo pero facade sirve para llamar a otra funcionalidad...es como un "puente o bypass" que sirve para desacople de código
@@MitoCode Gracias! Me quedo mas claro. Aprovecho de felicitarte y agradecerte por este curso ya que es muy dificil encontrar informacion tan clara de los patrones en internet
Me costo trabajo entender la diferencia entre Proxy y Fecade, pero hay va lo que yo entendí, (a ver si no estoy mal).... supongamos que ya tienes tu clase ´CuentaFachada´ tipo Fecade trabajando bien en productivo, y vas a liberar una nueva versión, ya lista y probada, el detalle esa en que es una liberación delicada y que es posible que tu nueva versión falle por el cambio de ambiente por lo que necesitas hacer un posible rollback de manera muy rápida, para eso, a tu clase Fecade a su vez le haces una clase Proxy llamada´CuentaProxy´ y esta llama a la ´CuentaFachada´ creas tu backup llamado ´CuentaFachadaBackup´ y así ya que liberes y vez que ha fallado la nueva versión puedes dejar todo como estaba cambiando una sola linea de código... ejemplo algo bobo, los respaldos también podría ser algo como: ´CuentaFachadaBanco1´ ´CuentaFachadaBanco2´ ´CuentaFachadaPCLocal´, ´CuentaFachadaPruebas´, ´CuentaFachadaDesarrollo´, mas ejemplos bobos, pero esa fue la idea que entendí
¿Cual es la diferencia con hacer un decorador para extender la funcionalidad de una clase?
Tengo la misma duda.
Esta aplicando un singleton(instancia única) para no crear objetos de más, aparte oculta la funcionalidad verdadera del objeto pudiendo también agregar try/catch, loggers etc sin modificar su verdadera lógica. Saludos!
¿Que diferenciaría al Proxy de un Decorador?. De acuerdo a este ejemplo. Gracias.
Proxy es más que todo para acceder a objetos y decorator para extender funcionalidades stackoverflow.com/questions/18618779/differences-between-proxy-and-decorator-pattern
Proxy es básicamente sustituto o marcador de posición para otro objeto. Un proxy controla el acceso al objeto original, permitiéndole realizar algo antes o después de que la solicitud llegue al objeto original.
Por ejemplo un objeto DB puede ser sustituido por otro objeto DB_Proxy pero esté tiene una funcionalidad de caché, sí en realidad es necesario llamar al objeto original DB el DB_proxy permite el paso, en caso contrario retorna el caché y no sobrecarga el objeto DB ( Ejemplo muy simple )
@@MitoCode Son muy similares. Veamos si entendi. Proxy lo tengo que usar para fines de obtener informacion de mi programa/app, como un LOG, para saber por donde va mi programa y que esta haciendo.
Ahora, si yo le agrego funcionalidad, osea que ademas de darme info antes o dsps de ejecutar el codigo de un metodo de la INSTANCIA de una clase X, le pido que agregue alguna funcion, eso ya se convertiria en un decorator... Si estoy en lo correcto, es muy sutil la diferencia y se presta para confucion. Slds y muy bueno el tuto. Lo estoy haciendo en paralelo con otro de patrones y este patron no esta en el otro curso. EXCELENTE CURSO.
Pregunta, este patron proxy no es similar al patron facade, en la idea de un intermediario con el que el cliente interactua primero? Se me hicieron muy similares, es como que me cuesta ver porque existe el patron proxy si se puede alcanzar lo mismo con el facade
El patron de diseño Facade busca reducir el acoplamiento entre clases. En lugar de tener tu clase acoplada a multiples funciones que hacen algo, mejor te unes a una facade que tiene ese acoplamiento.
Lo que haces es ubicar todo ese acoplamiento en un unico punto y buscar también la reutilización
Una consulta, para qué pasa la Cuenta por parámetro si después se crea una nueva Cuenta adentro de Proxy y se trabaja con ella?
se puede decir que el concepto middleware es igual al patron proxy?
Es posible implementar estos patrones de diseño en python en un enfoque POO?
Así es
También en PHP
Buen tuto mi loco
Cual seria la diferencia entre Proxy y Factory? porque me parece que ambos delegan
quiero pensar que con factory hay mas de 1 objeto, y con Proxy siempre habrá solo 1 objeto, ya que al preguntar si ya existe el objeto, se lo entrega, en factory crea uno nuevo, pienso que proxy es como facotory combinado con singleton, pero es mi idea, o lo que entendí en el video.
Hola! No me queda claro porque guardas la instancia de CuentaProxy dentro de ICuenta Proxy? Si no puedo instanciar interfaces...Gracias
Es sintaxis o estándares de java, interfaz a la izquierda, implementación a la derecha
Como
List lista = new ArrayList()
@@MitoCode y usaría los metodos implementados de la clase de la derecha? No se podría instanciar CuentaProxy directamente?
Al realizar inyeccíon al proxy te falto corregir dentro del proxi porque no puede inicializar con CuentaBancoAImp.
como se llama ese código en github ?
Solo Le faltaria a tu codigo en la clase Proxy ,dentro de los metodos que implementa que si la cuenta real es nula a cual clase de implementacion habria que hacer referencia . Segun deberia de ser a la que se le pasa por parametro en el constructor. Pero creo que ya se complica . Seria mejor
se podría hacer que el método retorne null, así obligando al cliente a especificar el banco
La clase proxy para robar un centavo por transacción jajaj
Qué tipo de proxy es?!!!
Hola. Una consulta. 1) al agregarle a la clase proxy la posibilidad de loguear las operaciones, no seria un decorator, ya que le estas agregando funcionalidades?. 2) En la clase proxy le diste la posibilidad de pasarle un objeto de tipo: new CuentaBancoBImpl(), pero dentro de los metodos del proxy estas instanciando new CuentaBancoAImpl(). No hay un error aqui?
En cuanto a tú pregunta 2 en realidad en la clase CuentaProxy nunca se cumpliría la condición "cuentaReal == null", debido a que al agregar el constructor y pasarle como parámetro la implementación, el atributo "cuentaReal" siempre será diferente de nulo.
Pero este patron es muy parecido al facade
El Proxy es un papá o un representante de algo... gg así lo entiendo yo...
Es como el patron de diseño injeccion de dependencias?
Cuando se agregó lo de las Interfaces, indirectamente se aplicó eso
Esto parece mas a los filters , incluso los anteriores patrones se parecen
veo mucha similutd con bridge
if(!cuentaReal){
cuentaReal = new CuentaBancoAImpl();
}
return cuentaReal.retirarDinero(cuenta, monto);
;)