Motivação
Singleton 
Motivação 
n Contextos em que só deva existir um único 
objeto de uma classe 
n Mais de uma instância de 
cer...
Singleton 
Motivação 
Global 
Acesso único 
Uma maneira de 
garantir que haja 
somente um 
único objeto de 
uma determinad...
Criando um objeto 
n Como fazer para criar um único objeto? 
n new MeuObjeto(); 
n É possível criar outro? 
n Sim 
n ...
Singleton 
public class MeuObjeto { 
private MeuObjeto() {} 
} 
n O que significa isso? 
n Existe algum código que possa...
Singleton 
public class MeuObjeto { 
public static MeuObjeto getInstance() {} 
} 
n O que isto significa? 
MeuObjeto.getI...
Singleton 
n Juntando as 2 coisas 
public class MeuObjeto { 
private MeuObjeto(){} 
public static MeuObjeto getInstance()...
Singleton 
n Uma outra forma de instanciar um objeto 
MeuObjeto.getInstance();
Exercício – 10min 
n Altere a classe abaixo de forma que ela só possa criar uma 
única instância da classe 
public class ...
Singleton 
Implementação clássica 
public class Singleton { 
private static Singleton instanciaUnica; 
private Singleton()...
Singleton 
Implementação clássica 
public class Singleton { 
private static Singleton instanciaUnica; 
private Singleton()...
+1 Padrão 
SINGLETON 
O Padrão Singleton garante que uma 
classe possua apenas uma única instância e 
fornece um ponto glo...
Singleton 
Resumindo 
n A classe Singleton gerencia sua única instância 
n Nenhuma outra classe pode criar uma nova 
ins...
Diagrama de classes
Aplicabilidade 
n Quando for necessário existir apenas uma 
única instância de uma classe, e essa 
instância deve dar ace...
Participantes 
n Singleton 
n Define uma operação getInstance() que 
permite aos clientes acessarem sua única 
instância...
Colaborações 
n Os clientes acessam uma instância Singleton 
unicamente pela operação getInstance do 
Singleton
Singleton - Padrão de Projeto
Próximos SlideShares
Carregando em…5
×

Singleton - Padrão de Projeto

1.236 visualizações

Publicada em

Apresentação sobre o padrão de projeto Singleton.

Publicada em: Software
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.236
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
40
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Singleton - Padrão de Projeto

  1. 1. Motivação
  2. 2. Singleton Motivação n Contextos em que só deva existir um único objeto de uma classe n Mais de uma instância de certos objetos podem causar problemas na execução de um programa n Importante quando um determinado objeto possui muitos recursos
  3. 3. Singleton Motivação Global Acesso único Uma maneira de garantir que haja somente um único objeto de uma determinada classe
  4. 4. Criando um objeto n Como fazer para criar um único objeto? n new MeuObjeto(); n É possível criar outro? n Sim n Podemos fazer o que se segue?
  5. 5. Singleton public class MeuObjeto { private MeuObjeto() {} } n O que significa isso? n Existe algum código que possa usar este construtor?
  6. 6. Singleton public class MeuObjeto { public static MeuObjeto getInstance() {} } n O que isto significa? MeuObjeto.getInstance();
  7. 7. Singleton n Juntando as 2 coisas public class MeuObjeto { private MeuObjeto(){} public static MeuObjeto getInstance() { return new MeuObjeto(); } }
  8. 8. Singleton n Uma outra forma de instanciar um objeto MeuObjeto.getInstance();
  9. 9. Exercício – 10min n Altere a classe abaixo de forma que ela só possa criar uma única instância da classe public class MeuObjeto { private MeuObjeto(){} public static MeuObjeto getInstance() { return new MeuObjeto(); } }
  10. 10. Singleton Implementação clássica public class Singleton { private static Singleton instanciaUnica; private Singleton() {} public static Singleton getInstance() { if (instanciaUnica == null) { instanciaUnica = new Singleton(); } return instanciaUnica; } }
  11. 11. Singleton Implementação clássica public class Singleton { private static Singleton instanciaUnica; private Singleton() {} public static Singleton getInstance() { if (instanciaUnica == null) { instanciaUnica = new Singleton(); } return instanciaUnica; } } n Uma variável estática para garantir uma única instância para toda a classe n Um construtor privado que somente a própria classe tem acesso n O método getInstance instancia o objeto único e o retorna n Pode haver outros métodos? n Sim
  12. 12. +1 Padrão SINGLETON O Padrão Singleton garante que uma classe possua apenas uma única instância e fornece um ponto global de acesso a ela.
  13. 13. Singleton Resumindo n A classe Singleton gerencia sua única instância n Nenhuma outra classe pode criar uma nova instância de uma classe Singleton n É preciso fazer uso da própria classe para criá-la n Ponto de acesso global n A própria classe
  14. 14. Diagrama de classes
  15. 15. Aplicabilidade n Quando for necessário existir apenas uma única instância de uma classe, e essa instância deve dar acesso aos clientes através de um ponto bem conhecido n Quando a única instância tiver de ser extensível através de subclasses, possibilitando aos clientes usarem uma instância estendida sem alterar o seu código
  16. 16. Participantes n Singleton n Define uma operação getInstance() que permite aos clientes acessarem sua única instância. getInstance é uma operação de classe, ou seja estática
  17. 17. Colaborações n Os clientes acessam uma instância Singleton unicamente pela operação getInstance do Singleton

×