Saturday, August 28, 2010

Design Patterns em Scala: Singleton

Singleton:Em Scala o padrão Singleton está embutido na linguagem e substitui os temíveis métodos static de Java que são um pesadelo para testes de unidade. O Singleton, criado com a palavra reservada object agrega os métodos de classe, isto é, que não depende dos dados de uma instância. Veja o exemplo abaixo:Singleton.scalapackage scala.creational// Permitir a criação de uma só instância de um tipo de objetoobject Singleton {// object in scala is a singleton class var value:Int = _ def someMethod() : String = { "Hello Singleton!" }}// Error://class BadSingleton private () {// private var instance:BadSingleton = null// // def getInstance() : BadSingleton = {// if(instance == null) instance = new DummySingleton()// return instance// }//}// Clientobject SingletonClient extends Application { println(Singleton.someMethod()) // Compile error // var s = new Singleton() var s1 = Singleton var s2 = Singleton println(Singleton.value) s1.value = 1 println(Singleton.value) s2.value = 2 println(Singleton.value) println(s1 == s2) // Compile error // println(new BadSingleton().getInstance()) // println(BadSingleton.getInstance())}

No comments:

Post a Comment