Classe Java Singleton
Classe Java Singleton
Neste tutorial, aprenderemos a implementar o Singleton Design Pattern em Java com a ajuda de exemplos.
Em Java, Singleton é um padrão de design que garante que uma classe possa ter apenas um objeto.
Para criar uma classe singleton, uma classe deve implementar as seguintes propriedades:
- Crie um
private
construtor da classe para restringir a criação de objetos fora da classe. - Crie um
private
atributo do tipo de classe que se refere ao objeto único. - Crie um
public static
método que nos permite criar e acessar o objeto que criamos. Dentro do método, criaremos uma condição que nos impede de criar mais de um objeto.
Exemplo:sintaxe de classe Java Singleton
class SingletonExample {
// private field that refers to the object
private static SingletonExample singleObject;
private SingletonExample() {
// constructor of the SingletonExample class
}
public static SingletonExample getInstance() {
// write code that allows us to create only one object
// access the object as per our need
}
}
No exemplo acima,
private static SingletonExample singleObject
- uma referência ao objeto da classe.private SingletonExample()
- um construtor privado que restringe a criação de objetos fora da classe.public static SingletonExample getInstance()
- este método retorna a referência ao único objeto da classe. Como o método estático , ele pode ser acessado usando o nome da classe.
Uso de Singleton em Java
Singletons podem ser usados ao trabalhar com bancos de dados. Eles podem ser usados para criar um pool de conexões para acessar o banco de dados enquanto reutiliza a mesma conexão para todos os clientes. Por exemplo,
class Database {
private static Database dbObject;
private Database() {
}
public static Database getInstance() {
// create object if it's not already created
if(dbObject == null) {
dbObject = new Database();
}
// returns the singleton object
return dbObject;
}
public void getConnection() {
System.out.println("You are now connected to the database.");
}
}
class Main {
public static void main(String[] args) {
Database db1;
// refers to the only object of Database
db1= Database.getInstance();
db1.getConnection();
}
}
Ao executarmos o programa, a saída será:
You are now connected to the database.
No nosso exemplo acima,
- Criamos uma classe singleton Database .
- O dbObject é um campo do tipo classe. Isso fará referência ao objeto da classe Database .
- O construtor privado
Database()
impede a criação de objetos fora da classe. - O método de tipo de classe estática
getInstance()
retorna a instância da classe para o mundo exterior. - Na Principal class, temos a variável de tipo de classe db1 . Estamos ligando para
getInstance()
usando db1 para obter o único objeto do Database . - O método
getConnection()
só pode ser acessado usando o objeto do Database . - Desde que o Banco de Dados pode ter apenas um objeto, todos os clientes podem acessar o banco de dados através de uma única conexão.
Singleton é um padrão de design em vez de um recurso específico para Java. Um padrão de projeto é como nossa biblioteca de código que inclui várias técnicas de codificação compartilhadas por programadores de todo o mundo.
É importante observar que existem apenas alguns cenários (como registro) em que os singletons fazem sentido. Recomendamos que você evite usar singletons completamente se não tiver certeza se deve usá-los ou não. Saiba mais:O que há de tão ruim em Singleton?
Java