Patrones de Diseño en Ruby :: Singleton
Publicado por Edgar González 23 Mayo 2006 en Patrones de Diseño, Ruby. Etiquetas: dise�o, GoF, idiomas, patrones, patrones de dise�o, ruby, singleton. english • españolUna critica que algunos hacen al libro "Design Patterns: Elements of Reusable Object-Oriented Software" es que las implementaciones de los patrones ahi expuestos están pensados para lenguajes estáticamente tipados (Java, C++, ...) y no cubren los lenguajes dinámicos (Ruby, Lisp, ...)
Las implementaciones de patrones de diseño en lenguajes dinámicos son por lo general mucho más sencillas que las implementaciones de los mismos patrones en lenguajes estáticamente tipados, de hecho muchas de estas implementaciones son verdaderamente triviales en los lenguajes dinámicos (en algunos casos inclusive ya son parte del lenguaje).
Tengo como idea generar un catálogo en español de patrones de diseño en Ruby. Para esto me basaré en información ya existente (por ejemplo en RubyGarden).
Para comenzar hablemos del Singleton.
La idea del patrón de diseño Singleton es asegurar que solo exista una instancia para una clase dada, y además ofrecer un punto global de acceso para dicha instancia.
En Ruby para implementar un singleton en una clase basta con hacer un mix con el module singleton.
class MiClase
include Singleton
end
Al hacer el mix el método new se vuelve privado y se tiene acceso al método instance el cual devuelve la instancia singleton de la clase.
NoMethodError: private method 'new' called for MiClase:Class
from (irb):5
irb(main):004:0> a = MiClase.instance
=> #<MiClase:0x30b1dc>
irb(main):004:0> b = MiClase.instance
=> #<MiClase:0x30b1dc>
P.S: Peter Norvig hizo una buena presentación de patrones de diseño en programación dinámica (sin embargo no usa Ruby como ejemplo)
0 Respuestas a “Patrones de Diseño en Ruby :: Singleton”
Por favor Espera
Añade un Comentario