Aluno:WalneyNegreirosGomes
Codigosdiponivel em: https://github.com/walneygomes/SingletonExempleVarianca
OBJETIVO
Mostra as melhoresformasde utilizaro Singletoncomqualidade.
SINGLETON
Singleton é umpadrãode projeto usadopara restringira instanciaçãode umaclasse para
apenasum objeto.Comomostranauml abaixo:
(disponivelem: WINKEPEDIA)
Existemquatropontosfundamentais.Oprimeiroé ocentrodissotudo,a logica.A própria
classe instanciaelamesmaparaque nenhumaoutra classe faça isso.
Segundaé o construtor.Para se implementar o padrão Singleton na classe acima, esta
deverá possuir um método construtor ServicesFactory() privado.
Terceira é o método getInstance(), que deverá ser obrigatoriamente declarado como um
método estático (static),
Quarto é a variável de instancia dela mesma.No inicio é NULL, mas quando o método
inntancia entra em ação, ela aponta para um objeto ServicesFactory.Ela sempre tem que
esta static para que o método possa realizar a intancia. O static permite que podemos
utilizar o método sem precisar instanciar a classe.
Variança Singleton
(disponivelem: https://github.com/w alneygomes/SingletonExempleVarianca)
 Sycnchronized
melhor maneira de implementar o Singleton em Java, em um ambiente multithread
com Sycnchronized. Ela força todo segmento a esperar sua vez antes de poder
inserir o método.
Esta solução requer que cada thread seja sincronizado quando, na realidade,
apenas os primeiros precisam ser. Nisso cada classe só pode ser carregada uma
vez e só será carregada quando for necessária. Isso significa que a primeira vez
que obterImpressora é chamado, impressora será carregado e a instance será
criada, e como isso é controlado por Impressora , nenhuma sincronização adicional
é necessária.
VOLATILE
O volatile checa sempre se um instancia foi criada e,se não, então sincronizamod.
Assim , sincronizamos apenas uma vez.
(disponivelem: https://github.com/w alneygomes/SingletonExempleVarianca)
Com isso reduzimos a sobrecarga.
SINGLETON COM ENUM
Um usuário avançado pode alterar o modificador de acesso privado do construtor para
qualquer coisa que deseje em tempo de execução usando reflexão. Se isso acontecer, o
construtor privado não acessível torna-se acessível e toda a ideia de tornar a classe um
singleton quebra.
Todos os problemas acima podem ser resolvidos com muita facilidade usando o tipo enum
para criar singletons.
(disponivelem: https://github.com/w alneygomes/SingletonExempleVarianca)
As três linhas acima fazem um singleton sem nenhum dos problemas discutidos. Como as
enums são inerentemente serializáveis, não precisamos implementá-las com uma interface
serializável. O problema da reflexão também não está lá. Portanto, é 100% garantido que
apenas uma instância do singleton está presente em uma JVM. Assim, este método é
recomendado como o melhor método de criar singletons em Java.As três linhas acima
fazem um singleton sem nenhum dos problemas discutidos. Como as enums são
inerentemente serializáveis, não precisamos implementá-las com uma interface
serializável. O problema da reflexão também não está lá. Portanto, é 100% garantido que
apenas uma instância do singleton está presente em uma JVM. Assim, este método é
recomendado como o melhor método de criar singletons em Java.
(disponivelem: https://github.com/w alneygomes/SingletonExempleVarianca)
Uma coisa a lembraraqui é que,aoserializarumenum, asvariáveis de camponão estãosendo
serializadas. Porexemplo,se serializarmose desserializarmoso ImpressoraEnumclasse,
perderemosovalordocampo intvalue.
REFERENCIA BIBLIOGRAFICAS
useACabeçaPadroesde projetos
winkepedia.com
slideshare.com

Mais conteúdo relacionado

PDF
PDF
Threads
PPTX
Ciclo de vida de um componente react
PPT
Exceptions Em Java UFF
PDF
Mock it with mockito
PDF
Visão geral sobre Assertivas e Exceções no Java7
PDF
Interfaces e polimorfismo
PPTX
JAVA - Tratamento de Erros
Threads
Ciclo de vida de um componente react
Exceptions Em Java UFF
Mock it with mockito
Visão geral sobre Assertivas e Exceções no Java7
Interfaces e polimorfismo
JAVA - Tratamento de Erros

Mais de Walney Negreiros (11)

PDF
padrao de projeto3
PDF
padrao de projeto2
PDF
padrao de projeto1
PDF
padrao de projeto0
PDF
Padroes de Projetos e aplicações- parte 02
PDF
Padroes de Projetos e aplicações- parte 01
PPTX
Pleonasmo
PPTX
PPTX
Ebep alunos-apresenta~çao
PPTX
Problemas de hardware e software
PPTX
padrao de projeto3
padrao de projeto2
padrao de projeto1
padrao de projeto0
Padroes de Projetos e aplicações- parte 02
Padroes de Projetos e aplicações- parte 01
Pleonasmo
Ebep alunos-apresenta~çao
Problemas de hardware e software
Anúncio

Último (12)

PPT
03_slide de Gerenciamento de Projetos .ppt
PDF
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
PPT
05_slide especificacao de sistemas de software e a uml UML.ppt
PDF
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
PPT
07_slides de Estilos_Arquiteturais sommerville.ppt
PDF
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
PPT
10_ slides de Reuso sommerville cap 10.ppt
PPT
00_Apresentacao sobre o livro do sommerville_ES.ppt
PPT
09_Evolucao de software e_Refatoracao.ppt
PPT
06_slide de Arquitetura_de_Software .ppt
PDF
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
PDF
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
03_slide de Gerenciamento de Projetos .ppt
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
05_slide especificacao de sistemas de software e a uml UML.ppt
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
07_slides de Estilos_Arquiteturais sommerville.ppt
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
10_ slides de Reuso sommerville cap 10.ppt
00_Apresentacao sobre o livro do sommerville_ES.ppt
09_Evolucao de software e_Refatoracao.ppt
06_slide de Arquitetura_de_Software .ppt
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
Anúncio

Singleton varianca

  • 1. Aluno:WalneyNegreirosGomes Codigosdiponivel em: https://github.com/walneygomes/SingletonExempleVarianca OBJETIVO Mostra as melhoresformasde utilizaro Singletoncomqualidade. SINGLETON Singleton é umpadrãode projeto usadopara restringira instanciaçãode umaclasse para apenasum objeto.Comomostranauml abaixo: (disponivelem: WINKEPEDIA) Existemquatropontosfundamentais.Oprimeiroé ocentrodissotudo,a logica.A própria classe instanciaelamesmaparaque nenhumaoutra classe faça isso. Segundaé o construtor.Para se implementar o padrão Singleton na classe acima, esta deverá possuir um método construtor ServicesFactory() privado. Terceira é o método getInstance(), que deverá ser obrigatoriamente declarado como um método estático (static), Quarto é a variável de instancia dela mesma.No inicio é NULL, mas quando o método inntancia entra em ação, ela aponta para um objeto ServicesFactory.Ela sempre tem que esta static para que o método possa realizar a intancia. O static permite que podemos utilizar o método sem precisar instanciar a classe.
  • 2. Variança Singleton (disponivelem: https://github.com/w alneygomes/SingletonExempleVarianca)  Sycnchronized melhor maneira de implementar o Singleton em Java, em um ambiente multithread com Sycnchronized. Ela força todo segmento a esperar sua vez antes de poder inserir o método. Esta solução requer que cada thread seja sincronizado quando, na realidade, apenas os primeiros precisam ser. Nisso cada classe só pode ser carregada uma vez e só será carregada quando for necessária. Isso significa que a primeira vez que obterImpressora é chamado, impressora será carregado e a instance será criada, e como isso é controlado por Impressora , nenhuma sincronização adicional é necessária.
  • 3. VOLATILE O volatile checa sempre se um instancia foi criada e,se não, então sincronizamod. Assim , sincronizamos apenas uma vez. (disponivelem: https://github.com/w alneygomes/SingletonExempleVarianca) Com isso reduzimos a sobrecarga.
  • 4. SINGLETON COM ENUM Um usuário avançado pode alterar o modificador de acesso privado do construtor para qualquer coisa que deseje em tempo de execução usando reflexão. Se isso acontecer, o construtor privado não acessível torna-se acessível e toda a ideia de tornar a classe um singleton quebra. Todos os problemas acima podem ser resolvidos com muita facilidade usando o tipo enum para criar singletons. (disponivelem: https://github.com/w alneygomes/SingletonExempleVarianca) As três linhas acima fazem um singleton sem nenhum dos problemas discutidos. Como as enums são inerentemente serializáveis, não precisamos implementá-las com uma interface serializável. O problema da reflexão também não está lá. Portanto, é 100% garantido que apenas uma instância do singleton está presente em uma JVM. Assim, este método é recomendado como o melhor método de criar singletons em Java.As três linhas acima fazem um singleton sem nenhum dos problemas discutidos. Como as enums são inerentemente serializáveis, não precisamos implementá-las com uma interface serializável. O problema da reflexão também não está lá. Portanto, é 100% garantido que apenas uma instância do singleton está presente em uma JVM. Assim, este método é recomendado como o melhor método de criar singletons em Java. (disponivelem: https://github.com/w alneygomes/SingletonExempleVarianca) Uma coisa a lembraraqui é que,aoserializarumenum, asvariáveis de camponão estãosendo serializadas. Porexemplo,se serializarmose desserializarmoso ImpressoraEnumclasse, perderemosovalordocampo intvalue.