sábado, 28 de agosto de 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.scala package scala.creational // Permitir a criação de uma só instância de um tipo de objeto object 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 // } //} // Client object 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()) }

Nenhum comentário:

Postar um comentário