Libellés

Affichage des articles dont le libellé est singleton. Afficher tous les articles
Affichage des articles dont le libellé est singleton. Afficher tous les articles

mercredi 13 juillet 2011

Singleton en Groovy

Rien de plus simple que de faire un Singleton en Groovy. Cela se résume à annoter une classe par ​@Singleton, puis à utiliser l'instance via le getter getInstance()

Je vous donne un exemple, testable ici:


​@Singleton
class Personn {
String name
int age
}

​def ​p = Personn.instance;
​p.name = "Romain"
p.age = 25

assert p == Personn.instance;
​


Si jamais vous tentez d'utiliser le constructeur par défaut, une exception sera lancée.


java.lang.RuntimeException: Can't instantiate singleton Personn. Use Personn.instance
at Personn.(Script1.groovy)
at Script1.run(Script1.groovy:9)




Par contre si vous créez un constructeur (même privé), ça ne marche plus.


@Singleton class Personn {

private Personn(){
println "toto"
}

String name

int age
}

def p1 = new Personn();
def p2 = new Personn();

assert p1 == p2

Assertion failed:

assert p1 == p2
| | |
| | Personn@1ee0563
| false
Personn@1a3e311