Olá Pessoal,
Mais um post da série “Design Pattern: Não é receita de bolo”, e hoje vamos conhecer o Singleton. Esse será um post bem pequeno. O singleton é um padrão adorado por uns e criticado por outros. Como tudo na vida, há vantagens e desvantagens.Vamos conhecer um pouco sobre esse padrão hoje.
Lets go…
Singleton
O Singleton nos permite ter apenas uma única instância de uma classe. Ou seja, não podemos ter mais que um objeto de uma classe singleton ao mesmo tempo no sistema. E para garantir isso declaramos o construtor como private e temos um método static que controla a criação do objeto.
Um exemplo na prática. Vamos supor que temos uma classe responsável por ler dados de um arquivo de properties e esses dados serão usados dentro do sistema e não queremos ter mais que uma instância da classe para lê os dados do arquivo de properties. Para isso, criamos um Singleton da classe que lê dados desse arquivo. A sintaxe para criar um Singleton é muitos simples, veja:
classe XX{
private static XX instancia;
private XX(){
}
public static XX getInstance(){
if(instancia==null){
XX.instancia = new Instancia();
}
return XX.instancia;
}
Sempre que precisarmos da instância dessa classe, apenas chamamos o método getInstance() e teremos acesso aos métodos disponíveis. Vamos ver:
Desenvolvimento
package com.camilolopes.classes;
public class ReadConfiguration {
private static ReadConfiguration instance;
private ReadConfiguration(){
//ninguem pode instanciar essa classe
}
//metodo que controla a criação de objetos
public static ReadConfiguration getInstance(){
if (instance==null) {
ReadConfiguration.instance = new ReadConfiguration();
}return ReadConfiguration.instance;
}
public String getUrl() {
// TODO Auto-generated method stub
return “url”;
}}
Criaremos uma classe com o método main para testarmos:
package com.camilolopes.classes;
public class MainConfiguration {
public static void main(String[] args) {
ReadConfiguration configuration = ReadConfiguration.getInstance();
System.out.println(configuration.getUrl());
}
}
Git Hub
Os projetos encontram-se no Github:
https://camilolopes@github.com/camilolopes/workspacedesignpattern.git
Simples não? Vou ficando por aqui e espero que tenham gostado do post.
Abracos, see ya!!
Hello there, I think your blog could be having browser compatibility problems.
When I take a look at your webb site in Safari, it looks
fine however, when opening in Internet Explorer, it has some overlappoing issues.
I merely wanted to give you a quick heads up! Other
than that, excellent blog!