Kouzelne Ruby

Ruby jsem se zacal venovat posledni rok ponekud aktivneji a porad me neprastava prekvapovat svou eleganci, za niz vdeci predevsim blokum(closures), mixinum (injektovani funkcionality vedle dedicnosti) a runtime modifikacim objektoveho modelu.

Demonstrovat silu techto konstruktu si muzeme napriklad na patternu Singleton. V prehistorickych programovacich jazycich obvykle udelam private konstruktor, budu mit lokalni statickou instanci a statickou synchronizovanou metodu pro pristup k ni.

V Ruby kod vypada nasledovne


require 'singleton' 
class FooService include Singleton end

a pouziti

foo1 = FooService.instance