Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ayuda con patrones de diseño!!!

Estas en el tema de Ayuda con patrones de diseño!!! en el foro de Programación General en Foros del Web. Hola!! Estoy tratando de aprender los patrones de diseño, tengo un libro del cual me estoy basando, pero el problema que encuentro es que los ...
  #1 (permalink)  
Antiguo 13/08/2008, 06:21
 
Fecha de Ingreso: febrero-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Sonrisa Ayuda con patrones de diseño!!!

Hola!! Estoy tratando de aprender los patrones de diseño, tengo un libro del cual me estoy basando, pero el problema que encuentro es que los ejemplos que me ofrece no me ayudan demasiado a comprender la utilidad de los patrones.
Lo que les quería pedir es si me podrían ayudar a conseguir ejemplos más simples, más cotidianos, acerca de cuándo usar cualquiera de los patrones de diseño...
Agradezco la ayuda que puedan brindarme!!
Muchas gracias!!
  #2 (permalink)  
Antiguo 13/08/2008, 06:43
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Ayuda con patrones de diseño!!!

Que libro tienes?

Te aseguro que si buscas en internet esos patterns encontrarás muchos ejemplos de ellos. google it!

Además, la mejor manera de aprender patrones es utilizarlos en un diseño de a deveritas.
__________________
Saludoss
Guille
  #3 (permalink)  
Antiguo 13/08/2008, 06:58
 
Fecha de Ingreso: febrero-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Ayuda con patrones de diseño!!!

El libro que tengo es el Grady Boock, "Patrones de diseño".
Estuve buscando ejemplos en el google, y me aparecen los mismos del libro... encontré uno solo que es distinto para el patrón Builder, que trata sobre una pizzería, pero de los demas hasta ahora no encontre otra cosa, igual voy a seguir buscando.
Estoy de acuerdo con vos, en que la mejor manera de aprenderlos es aplicarlos a un proyecto, y ese es mi objetivo, estoy haciendo un proyecto de ventas de mercadería, y estoy tratando de relacionarlo con los patrones para poder practicar, pero tengo la cabeza muy cerrada y no encuentro un ejemplo que me haga abrir la cabeza de como poder llegar a implementarlos.
  #4 (permalink)  
Antiguo 13/08/2008, 07:01
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Ayuda con patrones de diseño!!!

A ver, dime un par de patrones a ver si te puedo ayudar...¿builder, strategy, composite?¿decorator, command?
__________________
Saludoss
Guille
  #5 (permalink)  
Antiguo 13/08/2008, 07:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Ayuda con patrones de diseño!!!

del Abstract Factory, del Builder, del Singleton y el Composite creo que ya los tengo comprendidos y se me ocurre como poder llegar a aplicarlos. Se me dificulto un poco con el Factory Method, no se como seria un caso para aplicarlo, asi como del Prototype y del decorator.
  #6 (permalink)  
Antiguo 13/08/2008, 07:41
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Ayuda con patrones de diseño!!!

Vamos de a poco. En primer lugar, cada patron tiene su intención. ¿Que quiero decir con esto? Que tiene una función, algo para lo que sirve, y de ahí su nombre.

Seguro habrás notado que todos los patrones son iguales :P. Una superclase o interfaz con muchas subclases y un tercer objeto que usa todas esas implementaciones polimorficamente. Bueno, con ese criterio son todos stategies :P.

El factory method es un método fábrica :). Sirve para construir cosas. Para encapsular la construccion de un objeto en un método, olvidándote de su implementación interna, y de la clase concreta de ese objeto.
Por ejemplo, si tenemos un pedido, que puede ser mayorista o minorista (para lo que optamos por un strategy), podriamos encapsular la construccion de esos strategies en factory methods. Por ejemplo:

//TipoPedido es la clase abstracta del strategy, que contiene los factory //methods getMayorista y getMinorista();
Código:
public class Pedido{

TipoPedido tipoPedido;
Collection<Producto> productos;

public void setMayorista(){
   this.tipoPedido = TipoPedido.getMayorista();
}

public void setMinorista(){
   this.tipoPedido = TipoPedido.getMinorista();
}

}
Código:
public class TipoPedido{
//Cosas...

/**
*  Factory method
*
**/
public TipoPedido getMayorista(){
return new PedidoMayorista();
}

/**
*  Factory method
*
**/
public TipoPedido getMinorista(){
return new PedidoMinorista();
}

//Mas cosas...
}

El factory method esta bueno cuando los patrones Abstract Factory o Builder quedan "grandes" y complican mas de lo que ayudan.

----------------------------------------------------------------------------------------------------

El prototype es más raro de usar... Basicamente se crea un objeto clonándolo de otro. Seria de utilidad cuando tienes que duplicar algo, por ejemplo... Si haces una factura, con productos, seria razonable que en el historial quede el precio original del producto, por mas que ese precio haya cambiado con el tiempo. En ese caso seria bueno que la factura conozca un clon del producto original en vez de a él.

La clonación ayuda en varios sentidos: El único objeto que crea al clon es el mismo objeto, por lo que el acoplamiento se minimiza. La interfaz para clonarlo es tan simple como decirle clone(). A su vez, ese clon puede delegar en builders, factorys(abstract factories o factory methods) u otros objetos bleh para la creacion.

----------------------------------------------------------------------------------------------------

El decorator no es otra cosa que "decorar a un objeto". Le pones adornos, le agregas cosas. La idea básica es esa, agregarle responsabilidades, pero que el que lo use no se de cuenta. Polimorfismo :).
Un ejemplo podria ser(podria ser, es muy especial el caso del decorator tambien, y podria calzar otro patron aqui... ) decorar a un cliente con el "cliente promocion bleh" y cuando ese cliente compra algo, además de hacer lo que hace siempre, hace algo x la promocion y luego hace lo de siempre. Por ejemplo:

Código:
public class Cliente{
public void comprar(Producto unProducto){
//Hace esas cosas
}
}

public class ClienteConPromocionBleh extends Cliente{
private Cliente cliente;
private PromocionLoca promocion;
public void comprar(Producto unProducto){
promocion.seHaComprado(unProducto);
cliente.comprar(unProducto);
}
}
----------------------------------------------------------------------------------------------------

Espero te sirva :)
__________________
Saludoss
Guille
  #7 (permalink)  
Antiguo 13/08/2008, 07:53
 
Fecha de Ingreso: febrero-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Ayuda con patrones de diseño!!!

Muchisimas gracias!!!!! Te lo agredeszco mucho!!! me es de mucha ayuda!! :)

Gracias por tu tiempo :)
  #8 (permalink)  
Antiguo 06/10/2008, 01:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 2
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación Respuesta: Ayuda con patrones de diseño!!!

Hola, estoy con algunos problemas de diseño con patrones... y ya estoy un tanto enrredado y pidiendo ayuda por todos lados..... aver si por aca me pueden dar una mano aunque el problema es bastante complejo...

en un framework de persistencia... tengo q buscar toda una coleccion de objetos..

estos objetos son todos los productos y servicios q se ofrecen en el sistema; en el diagrama de clases las clases "producto" y "servicio" heredan de una clase "Item", sería algo asi:

Item

^ ^
| |
| |
| |
P S


(diganme si no soy bien explicito en el grafico)

O sea, tengo q disparar un buscar al motor de persistencia q me traiga todos esos prod. y servicios. la secuencia de pasos que tengo es:
Envio el buscar a la fachada patron SINGLETON y punto de acceso al framework, de ahi debería enviar el buscar a un "intermediario" para q atravez del uso de el patron PLANTILLA (TEMPLATE) me busque todo..
Para lo cual tengo una "fabrica" patron FACTORY que me crea el intermediario relacional y específico, que se encarga de mapear los datos obtenidos de la base de datos en los objetos que necesito...

la pregunta es:

como puodría hacer?, crear un intermediario item no se puede porq es abstracto, y los intermediarios de producto y servicio no se pueden comunicar entre si.

alguien podria darme alguna solucion??, y perdón si me fui muy al carajo... pero la verdad no encuentro respuestas en la web...

gracias y saludos!!!
  #9 (permalink)  
Antiguo 06/10/2008, 08:28
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Ayuda con patrones de diseño!!!

Mmm no entiendo bien lo que tienes que hacer. O sea, ¿Debes obtener el "intermediario" a partir de el producto/servicio? ¿o el intermediario debes conseguirlo antes para hacer la búsqueda?

No entiendo bien cual es el problema, porque por lo que veo el problema no es con los patrones sino como resolver un tema puntual :P.

O sea, estaria bueno que seas mas específico, contando que es lo que quieres hacer y con que datos cuentas, o que parametros tienes.
__________________
Saludoss
Guille
  #10 (permalink)  
Antiguo 07/10/2008, 10:37
 
Fecha de Ingreso: diciembre-2007
Mensajes: 178
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con patrones de diseño!!!

Hola amigos ya que estamos con el tema Patrones de diseño, yo tambien los estoy estudiando, en realidad segun tengo entendido los patrones son como 24, yo les quisiera preguntar a la gente que sabe de esto, cuales son los mas utilizados en el ambiente web (y si es con php mejor que es el lenguaje que estoy utilizando).

http://www.ibm.com/developerworks/library/os-php-designptrns/

por ejemplo en esta pagina hay 5 patrones que segun ellos son los mas utilizados, los ejemplos son bastante basicos.

Si alguien tiene algun otro que cree que puede ingresar a esta lista y puede dar algun ejemplo se lo agradezco.
  #11 (permalink)  
Antiguo 08/10/2008, 06:25
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Ayuda con patrones de diseño!!!

"los patrones mas utilizados"... Bleh, no me gusta hablar asi de los patrones. Parece que fueran una cosa divina, que nadie puede tocarlos, que son demasiado rigidos o cosas asi.

Lo importante de los patrones es que los mires, los utilices, y te abran la cabeza, asi puedes ver a los objetos con otra mirada. Los patterns principalmente lo que vienen a hacer es a mostrar que esta bueno modelar cosas que no pueden ver ni tocarse:
- el estado de algo
- un algoritmo
- una accion (que tradicionalmente se encuentra en un método, aqui se modela en un objeto aparte)
- una fabrica de objetos (para quitarle complejidad a la clase)
- etc

o sea, los patrones originales, del libro de GoF (gang of four) son 23. En internet hay cientos mas dando vueltas, muchos interesantes, otros no tanto.

Repito, lo importante es que los sepas usar y abras tu mente, luego pueden salir cosas muy interesantes de la tuya, no solo del libro (que esta ahi ademas para que no reinventes la rueda).
__________________
Saludoss
Guille
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:13.