Singleton - Padrão de Projeto

1.273 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.273
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

×