SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Padrão de Criação de ObjetosSingleton 
InstitutoFederaldeEducação,CiênciaeTecnologiadaParaíba–campusCajazeiras 
Curso:AnáliseeDesenvolvimentodeSistemas 
Professor:RodrigoAraújo 
Disciplina:PadrõesdeProjeto 
Fátima Ferreira 
Sérgio Diniz
Uma definição de Singleton
Umjeitofácildeacessarumainstânciadeclasseglobal. Singleton
Exemplo de motivação
Exemplo de motivação
Padrão Singleton 
Éimportanteparaalgumasclassesteruma,eapenasuma, instância. 
Emborapossamexistirmuitasimpressorasemumsistema, deveriahaversomenteumspoolerdeimpressoras;
Padrão Singleton -Intenção 
OPadrãoSingletonéumpadrãocriacional; 
Garantirqueumaclassetenhasomenteumainstânciaefornecerumpontodeacessoglobalparaamesma; 
Qualafuncionalidadedisso? 
Objetosquetratamdepoolsdeconexão,saídasgráficas, impressão,objetosquecuidamderegistrosnãodevemserinstanciadosmaisdeumavez 
UmoutrousodopadrãoSINGLETONéquandoqueremosumaclassedeLogparatodoosistema,semprecisarmosutilizarrecursosdosistemaparainstanciarumaclassesemprequeprecisarmosgravardadosnoservidor.
Padrão Singleton -Motivação 
Algunsprogramadoresdevemestarpensandoagora: 
Masissoéfácil!Bastaeuterumavariávelglobalcomainstânciadoobjetoesempreacessarela!
Oproblemaéqueessavariávelsendoinicializadanocomeçodaexecuçãodoprojeto,essaclasseestaráconsumindorecursosmesmosemserutilizada! 
ComoSingleton,aclassesóéinstanciadaquandovocêrealmenteprecisadela! 
Padrão Singleton -Motivação
Padrão Singleton -Motivação 
Comoprevenirqueumobjetonãosejainstanciadomaisdeumavez?
Padrão Singleton -Motivação 
Criarumconstrutorprivado.Comisso,aclassesópodeserinstanciadadentrodealgumdosseusprópriosmétodos! 
Melhor maneira de tornar a classe responsável por manter o controle da sua única instância;
Padrão Singleton -Aplicabilidade 
UseopadrãoSingletonquando: 
◦Forprecisohaverapenasumainstânciadeumaclasse,eessainstânciativerquedaracessoaosclientesatravésdeumpontobemdefinido; 
◦Aúnicainstânciativerdeserextensívelatravésdesubclasses,possibilitandoaosclientesusarumainstânciaestendidasemalteraroseucódigo;
Padrão Singleton -Estrutura
Lógicadaclasse:"Seomeuatributoinstanceédiferentedenullretornoelesenãovouinstanciareleeretorná-lo.AssimapróximachamadaagetInstance()vairetornaromesmoobjeto,independentedesenachamadaanterioreleeraounãodiferentedenulletodasaspróximaschamadas, enquantodureaaplicaçãosempreretornaráomesmoobjeto." 
Padrão Singleton -Estrutura
Padrão Singleton -Participantes 
◦AclasseSingletonseráaclassecujocontroledeinstânciaúnicaseráaplicado.Elapossuicomoresponsabilidadesocontroledacriaçãodaúnicainstância,eproveropontodeacessoaessainstância. 
◦OsclientessãotodasasoutrasclassesqueirãoacessarainstânciaúnicaatravésdométodogetSingleton()daclasseSingleton.
Padrão Singleton -Colaborações 
•Nessepadrãodeprojeto,irãoocorreriteraçõesentreaclasseSingletoneosclientes.AclasseSingletonpossuiummétodoestáticogetSingleton()queforneceaosclientesaúnicainstânciadaclasse.Dessemodo,garantimosaexistênciadeumpontoúnicodeacessoaesseobjeto. 
•Paragarantirmosqueoobjetosejaúnicoduranteaexecução, devemosdesabilitaroacessoaoconstrutordaclasseporoutrasclasses.AúnicaclassequedevepossuiracessoaoconstrutoréaprópriaclasseSingleton,enenhumaoutra.Issopodeserfeitotornandooconstrutordaclasseprivado.
Padrão Singleton -Consequências 
Acessocontroladoainstânciaúnica 
◦Aprópriaclasseencapsulasuainstânciaúnicae,portanto,temestritocontrolesobrecomoequandoosclientesaacessam; 
Reduçãononamespace 
◦OSingletonéumaalternativaeficienteàsvariáveisglobais.Evitapoluironamespacecomvariáveisglobaisquearmazenaminstânciasúnicas; 
Permiteumnúmerovariáveldeinstâncias 
◦PodepermitiracriaçãodemaisdeumainstânciadoSingletonouatécontrolaronúmerodeinstânciasexistentes.Somenteaoperaçãoinstance()precisasermodificada;
•AimplementaçãodopadrãoSingletonébastantesimples. Paratal,devemosprimeiroadicionarumavariávelestáticadomesmotipodaclassenaprópriaclasse.Essavariáveldeveráserprivada,paraevitarqueoutrasclassespossammodificá-la; 
•Aseguir,devemosadicionarummétodopúblicoeestáticogetSingleton()àclasse,queiráverificarseainstânciafoicriada.Senãofoicriadaainda,essemétodoirácriarela.Porfim,essemétodoretornaainstânciaarmazenada. 
Padrão Singleton -Implementação
•Paragarantirqueainstânciasejaúnica,equenenhumclientepossacriarumanovainstanciadaclasseSingleton, devemosprotegeroconstrutordaclasse,paraqueapenasométodogetSingleton()possacriarumanovainstância. 
•QualquerclasseclienteiráfazerumachamadaaométodoestáticogetSingleton()paraobterainstânciaúnicadaclasse.Nomomentoemqueforfeitaaprimeirachamadaaométodoainstânciaserácriada.Naschamadasseguintes, amesmainstânciaseráretornada. 
Padrão Singleton -Implementação
Padrões Relacionados 
VáriospadrõespodemserimplementadosUtilizandoSingleton,emparticular: 
◦AbstractFactory; 
◦Builder; 
◦Prototype;
Padrão Singleton -Exemplos
Exemplo 01 
•Imagineaseguintesituação: 
•ImaginequetenhamosumJanela,essaserianossaclasse, chamadaJanela...
Suponhamosquetemosduasfunções(quechamamosdemétodos),seriamAbrir()eFechar(); 
Então... 
Exemplo 01 
Aquestãoéqueparapodermosacessarumaclasseeseusmétodos/atributostemosqueinstanciá-la.
 Até aí tranquilo? Mas há um problema . 
 Toda vez que tivermos que abrir ou fechar essa janela, vamos ter que 
instanciar? 
Exemplo 01
Exemplo 01 –Solução Singleton
Exemplo 02 
•“Imagineumaaplicaçãoondesefaznecessáriocriarumarquivodelogpararegistrarquandousuáriologanosistema.”
Solução
Solução
Exemplo 03 
•Imagine a seguinte situação 
•“Suponhaquevocêdevetrabalharemumprojetocomputacionalparaumadeterminadafabricadecarros,osistemacadastrarcarrosdaFordedaFiat,edevecontrolaraquantidadedecarrosfabricados,egerarumrelatórioinformandoessesdados.Contudo,nãoécabívelqueexistamaisdoqueumafábricadecarrospararealizaressecontrole.”
Atividade 
Imagine a seguinte situação: 
◦“Gostariadecriarumaclassequegerasseumaconexãocommeubancodedados.Quandoeuacessaraprimeiravezessaclasse,seráconstruídaumaconexão,masnodecorrerdaexecução,casoexistamaisacessosaobanco,gostariadeutilizaraMESMAclassecomaMESMAconexão."
Atividade
Patterns: Singleton
Patterns: Singleton
Patterns: Singleton
Patterns: Singleton
Patterns: Singleton

Contenu connexe

Plus de Fatinha de Sousa (6)

Segurança Na Internet
Segurança Na InternetSegurança Na Internet
Segurança Na Internet
 
Segurança em redes
Segurança em redesSegurança em redes
Segurança em redes
 
Banco de Dados Multimidia
 Banco de Dados Multimidia Banco de Dados Multimidia
Banco de Dados Multimidia
 
Gerenciamento de Pessoas
Gerenciamento de PessoasGerenciamento de Pessoas
Gerenciamento de Pessoas
 
Estudo de Caso Windows
Estudo de Caso WindowsEstudo de Caso Windows
Estudo de Caso Windows
 
Patterns: Factory Method
Patterns: Factory MethodPatterns: Factory Method
Patterns: Factory Method
 

Dernier

8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
RogrioGonalves41
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 

Dernier (20)

Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdfAula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 

Patterns: Singleton