Metodi singleton

Il comportamneto di una istanza è determinato dalla sua classe, ma ci potrebbero essere casi in cui una particolare istanza deve avere un comportamneto speciale.  Nella maggior parte dei linguaggi, dobbiamo prenderci il fastidio di definire un'altra classe, che istanzieremo una sola volta.  In ruby possiamo dare ad ogni oggetto i suoi propri metodi.

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

 

In questo esempio, test1 e test2 appartengono alla stessa classe, ma per test2 è stato ridefinito il metodo size e così si comporta diversamente.  Un metodo appartenente solo ad un singolo oggetto è chiamato singleton method.

I metodi singleton sono spesso usati per gli elementi di una GUI, dove devono essere svolte azioni diferenti quando bottoni diversi sono premuti.

I metodi Singleton non sono presenti solo in ruby, sono presenti nel CLOS, Dylan, etc.  Anche, alcuni linguaggi, come ad esempio, Self e NewtonScript, hanno i metodi singleton.  Questi sono talvolta chiamati linguaggi prototype-based.

Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Graziano
Hai qualche domanda da fare?