Olá desenvolvedores, iremos explorar neste tutorial um pouco mais o padrão de projeto Singleton em Java e a conexão com o banco de dados. No tutorial “JDBC – CRIANDO CONEXÃO COM O BANCO”, criamos uma classe de conexão com o banco de dados, a qual utilizaremos para conectar nossa aplicação a base de dados.

O padrão de projeto Singleton tem o objetivo de garantir a existência de apenas uma instância de uma classe, o que significa manter um único ponto global de acesso ao seu objeto. Mas vamos com calma, e voltar um pouco no tempo.

DESIGN PATTERNS

Em 1995 um grupo formado por quatro profissionais se basearam nas ideias do arquiteto Christopher Alexander, e documentaram os recorrentes problemas que aconteciam no cenário de desenvolvimento de softwares.

O documento criado por estes profissionais originou o livro, “Design Patterns: Elements of Reusable Object-Oriented Software” ou “Padrões de Design: Elementos de Software Orientado a Objetos Reutilizáveis”. A ideia é traçar caminhos que compreendam a melhor forma de resolver um problema. E é exatamente isso o que padrões de projeto é. Hum, como assim? Grosso modo, padrões de projeto são uma coleção de soluções para problemas recorrentes no desenvolvimento de aplicações, sejam elas web mobiles, ou desktops. Logicamente tais soluções já foram verificas, isto é, comprovadas.

E é exatamente neste contexto de soluções para problemas recorrentes que se insere o padrão Singleton. Vem comigo para saber mais.

PADRÃO SINGLETON

Como já mencionado o padrão Singleton cumpre o objetivo de garantir que uma classe tenha apenas uma instância de si mesma, fornecendo desse modo um único ponto de acesso global a ela. Entenda o Singleton como um componente único do sistema, criado uma única vez no projeto e que gerencia tudo ao seu redor.

Em nosso exemplo, temos então o banco de dados, e todas as camadas do sistema compartilharão desta única conexão. Como camadas nos referimos a todos os elementos do sistema, como classes, telas, Daos, controllers, todos acessarão esta única instância. Todos que necessitarem uma conexão com o banco de dados virão a classe “SingleConnection”. Note que podemos, sim, abrir inúmeras sessões, mas somente uma única conexão, e por isso, a classe responsável por esta conexão obedece ao padrão Singleton.

public class SingleConnection {
}

E por que não podemos abrir mais de uma conexão? Entre outros motivos por questões como performance. Se ao subir o sistema, mais de uma conexão for encontrada, teremos um sistema lento, travado, cheio de bugs.

E o que determina que a nossa classe responde ao padrão Singleton é a sua parte estática (static), o método static.

Dessa forma não instanciamos a classe singleton, apenas a invocamos. Neste contexto quando chamamos a classe SingleConnection, automaticamente o método estático irá retornar a conexão que já existe.

EM POUCAS PALAVRAS

O tutorial de hoje, nos trouxe o conceito de padrões de projeto, e neste cenário nos apresentou o padrão Singleton. Mencionamos que os padrões de projeto têm por essência a solução para problemas recorrentes no desenvolvimento de sistemas. Assim, no caso da nossa implementação que problema ele resolve? O problema da criação de mais de uma conexão com a base de dados que leva a sistemas lentos e de baixa performance.

Espero que tenha ficado claro que apenas uma conexão será criada, e esta única conexão será compartilhada com todas as camadas do sistema. E por isso criamos a classe SingleConnection que obedece às “regras” do padrão Singleton. Eu fico por aqui, nos vemos no próximo tutorial.