SlideShare ist ein Scribd-Unternehmen logo
1 von 5
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

Weitere ähnliche Inhalte

Ähnlich wie Singleton varianca

Padrão de Projetos singleton
Padrão de Projetos singletonPadrão de Projetos singleton
Padrão de Projetos singletonWendel Moreira
 
Padrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonPadrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonEduardo Nicola F. Zagari
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BRrafaeladson
 
Componentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkComponentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkFlávio Lisboa
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfAndreCosta502039
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - IIFabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Applets e Java web start
Applets e Java web startApplets e Java web start
Applets e Java web startArtur Rodrigues
 
Prototype1 - thiago
Prototype1 - thiagoPrototype1 - thiago
Prototype1 - thiagotceufrasio1
 
Aprendendo C# do zero
Aprendendo C# do zeroAprendendo C# do zero
Aprendendo C# do zeroManawydan
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - IFabio Moura Pereira
 

Ähnlich wie Singleton varianca (20)

Padrão de Projetos singleton
Padrão de Projetos singletonPadrão de Projetos singleton
Padrão de Projetos singleton
 
Threads em java
Threads em javaThreads em java
Threads em java
 
Padrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonPadrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - Singleton
 
Applets
AppletsApplets
Applets
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BR
 
Fragmentos
FragmentosFragmentos
Fragmentos
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Interface
InterfaceInterface
Interface
 
Componentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkComponentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada framework
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
padrao de projeto0
padrao de projeto0padrao de projeto0
padrao de projeto0
 
Eclipse uml
Eclipse umlEclipse uml
Eclipse uml
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Applets e Java web start
Applets e Java web startApplets e Java web start
Applets e Java web start
 
Prototype1 - thiago
Prototype1 - thiagoPrototype1 - thiago
Prototype1 - thiago
 
Patterns
PatternsPatterns
Patterns
 
Aprendendo C# do zero
Aprendendo C# do zeroAprendendo C# do zero
Aprendendo C# do zero
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
 

Mehr von Walney Negreiros

Mehr von Walney Negreiros (10)

padrao de projeto3
padrao de projeto3padrao de projeto3
padrao de projeto3
 
padrao de projeto2
padrao de projeto2padrao de projeto2
padrao de projeto2
 
padrao de projeto1
padrao de projeto1padrao de projeto1
padrao de projeto1
 
Padroes de Projetos e aplicações- parte 02
Padroes de Projetos e aplicações- parte 02Padroes de Projetos e aplicações- parte 02
Padroes de Projetos e aplicações- parte 02
 
Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01
 
Pleonasmo
PleonasmoPleonasmo
Pleonasmo
 
Anafora
AnaforaAnafora
Anafora
 
Ebep alunos-apresenta~çao
Ebep alunos-apresenta~çaoEbep alunos-apresenta~çao
Ebep alunos-apresenta~çao
 
Problemas de hardware e software
Problemas de hardware e softwareProblemas de hardware e software
Problemas de hardware e software
 
INCAS
INCAS INCAS
INCAS
 

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.