Ir para conteúdo

Design Patterns #1 - Singleton


Lüigi!

Posts Recomendados

Olá caro povão, como vocês estão?

 

 Iniciarei uma pequena série sobre alguns design patterns em Java, se quiser saber um pouco o que é design pattern:

 

 

 

Design patterns represent the best practices used by experienced object-oriented software developers. Design patterns are solutions to general problems that software developers faced during software development. 

 Traduzindo:

 

 

Design patterns representam as melhores práticas usado por desenvolvedores de sistemas orientado a objetos experientes. Design patterns são soulções para problemas comuns que os desenvolvedores encontram durante o desenvolvimento. 

 

 Hoje falaremos sobre o Singleton, um dos meus favoritos e tenho quase certeza que sabendo dele ou não, você já chegou a utilizar ele.

 

  O objetivo do Singleton é permitir a criação de uma única instância de uma classe e fornecer um modo para recuperá-la.

 

  Como a maioria por aqui utiliza o Bukkit API, citarei um exemplo prático para vermos o Singleton, vamos supor que temos uma classe que é responsável pela configuração do seu plugin, chamaremos ela de ConfigManager:

 

public class ConfigManager {

  private YAMLConfiguration config = .....
  private File file = .....

  public ConfigManager(){
     //Aqui vão estar os métodos de inicialização da config
    
  }
 
  public String getString(String path){

  return blablabla
 }
  
}

 Como nesse caso a config não precisará de várias instancias, poderemos usar o padrão Singleton para acessarmos sua classe de qualquer lugar! Primeiramente temos que mudar o construtor para deixar ele privado:

public class ConfigManager {

  private YAMLConfiguration config = .....
  private File file = .....
 
  private ConfigManager(){ //Para não podermos criar instancias da classe
    foo.foo;
  }
 
  public String getString(String path){

  return blablabla
 }
  
}

 Agora temos de implementar um método que controle a criação da única instancia da classe:

public class ConfigManager {

  private static ConfigManager instancia;  

  private YAMLConfiguration config = .....
  private File file = .....
 
  private ConfigManager(){ //Para não podermos criar instancias da classe
    foo.foo;
  }
 
  public static ConfigManager getInstancia(){
      
      if(instancia == null){
      //Caso a instancia não exista ainda, criar ela
      instancia = new ConfigManager();
      } 
      
      return instancia;

  }  

  public String getString(String path){

  return blablabla
 }
  
}

 Pronto, agora podemos utilizar a classe:

public String pegarStats(Player p){
  
  return ConfigManager.getInstancia().getString(p.getName()+".Stats");
 
}

 Por hoje é só galera, é um conceito bem simples porém você vai encontrar várias situações aonde utilizar Singletons, eu estarei criando mais tutoriais de design patterns e aceito sugestões e conto muito com seu feedback!

 

 Então é isso galera, obrigado pela leitura e espero ter sido claro!  

 

Link para o comentário
Compartilhar em outros sites

Pra quem quer realmente se aprofundar no assunto recomendo dar uma olhada nesse repositório https://github.com/iluwatar/java-design-patterns

 

Tem vários Design Patterns implementados em java... é muito bom.

 Aproveitando que você esta por aqui... Quer sugerir qual pattern eu deveria fazer para meu próximo tutorial?

Link para o comentário
Compartilhar em outros sites

Como sempre digo: "Aquele pensa que sabe muito, mas não sabe de nada, e a sua ignorância é tanta que nem sequer está em condições de saber aquilo que lhe falta."

 

Muito útil.

 wow q filósofo kk

 

 Vlw!

Link para o comentário
Compartilhar em outros sites

 Aproveitando que você esta por aqui... Quer sugerir qual pattern eu deveria fazer para meu próximo tutorial?

Ih conheço vários... mas sla, faz sobre o Strategy, é legal pra coisas relacionadas a jogos...

Como sempre digo: "Aquele pensa que sabe muito, mas não sabe de nada, e a sua ignorância é tanta que nem sequer está em condições de saber aquilo que lhe falta."

 

Muito útil.

N tendi onde isso se encaixa nesse tópico...

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...