Padrão Singleton simplificado utilizando objects em Kotlin
Já se deparou com situações em que não é desejável a criação de mais de uma instância de uma determinada classe enquanto desenvolvia um de seus aplicativos? Como você resolveu esse problema? Provavelmente fazendo com que o construtor da classe se tornasse e privado e disponibilizando um objeto que era instanciado internamente, certo?!
Bem, caso você não saiba, existe um design pattern que especifica esse comportamento, o padrão Singleton, e uma forma simplificada de implementá-lo em Java seria da seguinte forma:
public class InstanciaUnica {
public InstanciaUnica instancia;
private InstanciaUnica(){
//Garantir que objetos não serão criados fora da classe
}public static InstanciaUnica getInstancia() {
//retornar a instância única
if(instancia == null) {
instancia = new InstanciaUnica();
}
return instancia;
} public void exibirInformacoesDeSeguranca() {
...
}
}
Como você já pode perceber, a maior parte do código que escrevemos está sendo escrito apenas para obedecer ao padrão, uma vez que de todo esse bloco de código, a única parte que realmente importa é o método exibirInformacoesDeSeguranca.
Como já era de se esperar, a linguagem Kotlin possui uma maneira bem mais eficiente para resolver esse tipo de problema através da utilização da palavra reservada object, observe:
object InstanciaUnica {
fun exibirInformacoes() {
...
}
}Pronto! Todo o boilerplate da linguagem Java foi deixado de lado e agora podemos nos concentrar no que realmente importa: a solução da regra de negócio existente.
Ao fazer uso do comando object, o compilador irá gerar automaticamente um construtor privado, garantindo que não exista mais de uma instância para essa classe. Além disso, o object funciona como uma classe, então você pode estender outras classes, implementar interfaces, criar métodos, atributos e etc.
I don’t go to sleep when I’m tired. I sleep go to sleep when I’m done! — Eric Thomas
Esse é uma forma de tirar proveito do comando object em Kotlin. Se você gostou dessa postagem, não se esqueça de recomendá-la e compartilhar em suas redes sociais para que outras pessoas tenham acesso. Sinta-se a vontade para deixar um comentário a respeito dessa postagem, e não se esqueça de me seguir para ser notificado sobre novas atualizações.
Até a próxima.
