Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO Duda con patron de diseño Singleton

Estas en el tema de Duda con patron de diseño Singleton en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, hace semanas que vengo usando este patron de diseño y me funciona sin problemas, lei el concepto de singleton y como sabemos ...
  #1 (permalink)  
Antiguo 04/01/2011, 11:13
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Duda con patron de diseño Singleton

Hola a todos, hace semanas que vengo usando este patron de diseño y me funciona sin problemas, lei el concepto de singleton y como sabemos crea una instancia unica de una clase para volver a re-usarla sin volver a instanciarla nuevamente, esto comunmente se usa en la instancia de una conexion a la BD, bien todo claro, se entiende el proposito, trata de evitar multipes conexiones a la db PERO creo que es de locos volver a crear una conexion o instancia cada vez que se va hacer una query, no creo que alguien haga eso, la mayoria hace un include a un config.php en la que se encuentra la unica conexion y que sirve a toda la pagina.. entonces de que ayuda singleton si nadie hace lo que se supone que previene????

Saludos

Última edición por Enfermin; 04/01/2011 a las 11:14 Razón: me falto la ñ XD
  #2 (permalink)  
Antiguo 04/01/2011, 11:35
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Duda con patron de diseño Singleton

Acá se habla bastante sobre por que no es conveniente usar Singleton para crear conexiones.
http://www.forosdelweb.com/f18/duda-...-clase-835534/
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 04/01/2011, 11:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Duda con patron de diseño Singleton

No es uno de mis patrones favoritos y trato de huir de el lo maximo posible, pero usarlo para la conexión a la bbdd es una pésima idea, googlea y vas a encontrar info, igualmente si aplicas el patrón no vas a crear nuevas conexiones, siempre vas obtener la misma.
  #4 (permalink)  
Antiguo 04/01/2011, 11:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Duda con patron de diseño Singleton

Cita:
Iniciado por masterpuppet Ver Mensaje
No es uno de mis patrones favoritos y trato de huir de el lo maximo posible, pero usarlo para la conexión a la bbdd es una pésima idea, googlea y vas a encontrar info, igualmente si aplicas el patrón no vas a crear nuevas conexiones, siempre vas obtener la misma.
a mi me resulta muy practico dicho patrón, aunque a veces con una clase de métodos estáticos resulta exactamente igual...

si, aún sigo con la duda... ¿en que tipo de escenarios usarían singleton?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/01/2011, 12:10
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Respuesta: Duda con patron de diseño Singleton

Cita:
Iniciado por NUCKLEAR Ver Mensaje
Acá se habla bastante sobre por que no es conveniente usar Singleton para crear conexiones.
http://www.forosdelweb.com/f18/duda-...-clase-835534/
Buen dato, ahora se que no es recomendable usar singelton si se va usar una segunda db, empezare a dejar de usarlo pero aun asi no responde mi pregunta y no quisiera abandonar singleton antes de haberlo comprendido por completo

Cita:
Iniciado por masterpuppet Ver Mensaje
No es uno de mis patrones favoritos y trato de huir de el lo maximo posible, pero usarlo para la conexión a la bbdd es una pésima idea, googlea y vas a encontrar info, igualmente si aplicas el patrón no vas a crear nuevas conexiones, siempre vas obtener la misma.
Bueno los ejemplos mas populares que encontre fueron con BD razon por la cual empece a usarlo, pero creo que no entendiste mi duda, NO trato de crear una nueva instancia con singleton porque sabemos que singleton lo previene, y si lo proviene... mi duda era, entonces hay alguien quien hace tantas nuevas conexiones a una db?? en ningun codigo he visto aplicar esa idea de crear nuevas conexiones en una misma pagina.. entonces que previene singleton si nadie hace lo que se supone que previene??
  #6 (permalink)  
Antiguo 04/01/2011, 13:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Duda con patron de diseño Singleton

Cita:
Iniciado por Enfermin Ver Mensaje
entonces que previene singleton si nadie hace lo que se supone que previene??
bueno, pasa lo mismo con el preservativo... sabemos lo que previene, ¿pero quien lo usa por dicha razón?

aún así, yo tampoco entiendo tu duda...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 04/01/2011, 13:32
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: Duda con patron de diseño Singleton

Depende del uso que se le puede dar, nunca lo apliqué a conexiones a bd.
Lo usé en una clase llamada "laboratorio", el cual poseía varios metodos, del tipo getAreas(x), getMedicos(), getAnalisis(x).
Dentro del controlador, el cual hacia uso de herencia, dicho singleto se aplicaba en ambos , padre e hijo (si mal no recuerdo).
Por lo tanto evitaba la redundancia de instancias de la clase laboratorio.

A su vez cuando se modifican sistemas completos en producción, el singleton evita tener que estudiar las lineas para saber si ya se instanció X clase.

Esa es mi experiencia con singleton.
__________________
I am Doyle please insert code.
  #8 (permalink)  
Antiguo 04/01/2011, 15:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda con patron de diseño Singleton

No todos los lenguajes tienen las mismas caracterísitcas, que en PHP puedas hacer una clase con el 100% de sus métodos estaticos no significa que lo puedas reproducir en otros lenguajes. Eso signfica que Singleton tiene su utilidad para sobrellevar esa restricción y poder hacer clases que garantizen que solo tengan una instancia.

Este patrón es util para diferentes casos / aplicaciones, como por ejemplo un Registro, donde solo quieres tener una sola instancia con los datos.
  #9 (permalink)  
Antiguo 06/01/2011, 19:45
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Duda con patron de diseño Singleton

Los patrones de diseño son soluciones generales para problemas que ocurren comunmente y son reusables. bien ahora el patron singleton dice lo siguiente

Cita:
Garantiza que una clase solo tenga instancia (objeto) y proporciona un punto de acceso global a ella
Bien el patron habla de instancias por lo cual estamos tambien hablando de objetos, este es el punto clave.
Ahora si tomamos en cuenta lo que son los patrones y lo que es el singleton y asumiendo que tu pregunta es una cosa comun como lo es acceder a una base de datos:
Cita:
creo que es de locos volver a crear una conexion o instancia cada vez que se va hacer una query, no creo que alguien haga eso, la mayoria hace un include a un config.php en la que se encuentra la unica conexion y que sirve a toda la pagina.. entonces de que ayuda singleton si nadie hace lo que se supone que previene????
Si asi es comunmente en la programacion estructurada eso haces pero si estas trabajando con objetos ?? como garantizo una sola conexion (si fuera el caso) ? y que pueda acceder desde cualquier punto de la aplicacion

Pues bien hay es donde usas tu singleton. cuando necesitas que tu clase requiera una sola instancia y quien la usa tambien. pero en lavida real siempre hay una forma de hacer el trabajo sin usarlo ya que el singleton es uno de los patrones de diseño del que mas se abusa y que por su forma de emplearse promueve el acoplamiento y oculta dependecias. En la definicion puse global resaltado por que muchas veces gloabal se compara con el significado que tiene esa palabra en un lenguaje y el patron en realidad se refiere al alcance dentro del dominio no del lenguaje. Hay muchos casos que requieren un singleton pero no necesariamente tiene que ser el patron Singleton la solucion. en otras palabras el problema no es tener un objeto unico si no el uso que se le da al patron el cual en la mayoria de los casos se puede sustituir por otras solucion.

Saludos
  #10 (permalink)  
Antiguo 30/01/2011, 07:31
Avatar de Seixas  
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona
Mensajes: 60
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Duda con patron de diseño Singleton

Estoy de acuerdo que en los casos que es necesario conectarse a diferentes bases de datos, el patrón singleton no sirve. En estos casos, se puede utilizar registry como bien habeis dicho, pero también tenemos la opción del patrón Multiton: http://en.wikipedia.org/wiki/Multiton_pattern

Etiquetas: diseño, patron, singleton
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:12.