Module Singleton ou méthodes de classe + variables d'instance de classe pour un comportement de type singleton dans Ruby?
-
29-10-2019 - |
Question
J'ai besoin d'une classe qui a un comportement singleton.
Quelle est la différence entre l'utilisation du module Singleton ...
require 'singleton'
class X
include Singleton
def set_x(x)
@x = x
end
def test
puts @x
end
end
X::instance.set_x('hello')
X::instance.test
... et en utilisant des méthodes de classe et des variables d'instance de classe?
class X
def self.set_x(x)
@x = x
end
def self.test
puts @x
end
end
X::set_x('hello')
X::test
La solution
Rien, comme vous avez écrit votre code - mais un singleton est une classe qui n'autorise qu'une seule instance.Rien dans le deuxième extrait de code n'interdit l'instanciation de plusieurs instances.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow