Méthodes singletons

Le comportement d’une instance est déterminé par sa classe, mais il y a des fois où nous savons qu’une instance particulière devrait avoir un comportement spécial. Dans la plupart des langages, il faut se donner la peine de définir une autre classe, qu’on aura à instancier une seule fois. En ruby, on peut donner à n’importe quel objet ses propres méthodes.


ruby> class SingletonTest
   |   def taille
   |     print "25\n" 
   |   end
   | end
  nil
ruby> test1 = SingletonTest.new
  #<SingletonTest:0xbc468>
ruby> test2 = SingletonTest.new
  #<SingletonTest:0xbae20>
ruby> def test2.taille
   |   print "10\n" 
   | end
  nil
ruby> test1.taille
25
  nil
ruby> test2.taille
10
  nil

Dans cet exemple, test1 et test2 appartiennent à la même classe, mais test2 a une méthode taille redéfinie, et donc ils se comportent différemment. Une méthode donnée seulement a un objet est appelée une méthode singleton.

Les méthodes singletons sont souvent utilisées pour les éléments de l’interface graphique (GUI – graphic user interface), où différentes actions doivent survenir lorsque différents boutons sont pressés.

Les méthodes singletons ne sont pas propres à ruby, car elles apparaissent aussi dans CLOS, Dylan, etc. D’autres langages, comme par exemple Self et NewtonScript, n’ont même que ça. On appelle ces langages des langages à prototypes.

Guide de l’utilisateur

Précédent : GDU : Contrôle d’accès Suivant : GDU : Modules