k19 k51-design-patterns-em-java

Download K19 k51-design-patterns-em-java

Post on 11-Jun-2015

827 views

Category:

Documents

8 download

Embed Size (px)

TRANSCRIPT

  • 1. TREINAMENTOSDesign Patterns em Java

2. Design Patterns em Java5 de janeiro de 2012Sumrio iSobre a K191Seguro Treinamento 2Termo de Uso 3Cursos 41 Introduo 51.1 Sistemas Corporativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51.2 Orientao a Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Padres de Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Padres de criao72.1 Factory Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72.2 Exerccios de Fixao . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Abstract Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4 Abstract Factory + Factory Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.5 Exerccios de Fixao . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.6 Exerccios Complementares . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.7 Builder . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.8 Exerccios de Fixao . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.9 Prototype . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.10 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.11 Singleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.12 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.13 Multiton (no GoF) . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.14 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.15 Object Pool (no GoF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.16 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Padres Estruturais41 www.k19.com.br i 3. S UMRIO ii 3.1Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.2Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.3Bridge . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.5Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.6Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.7Decorator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.8Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.9Facade . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.10 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.11 Front Controller (no GoF). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.12 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.13 Flyweight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.14 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.15 Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.16 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784Padres Comportamentais 81 4.1 Command . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 4.2 Exerccios de Fixao .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 4.3 Iterator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 4.4 Exerccios de Fixao .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89 4.5 Mediator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 4.6 Exerccios de Fixao .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 4.7 Observer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 4.8 Exerccios de Fixao .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 4.9 State . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.10 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.11 Strategy . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.12 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.13 Template Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.14 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.15 Visitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.16 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117iiwww.k19.com.br 4. 1S UMRIOSobre a K19A K19 uma empresa especializada na capacitao de desenvolvedores de software. Sua equipe composta por prossionais formados em Cincia da Computao pela Universidade de So Paulo(USP) e que possuem vasta experincia em treinamento de prossionais para rea de TI.O principal objetivo da K19 oferecer treinamentos de mxima qualidade que relacionados sprincipais tecnologias utilizadas pelas empresas. Atravs desses treinamentos, seus alunos se tornamcapacitados para atuar no mercado de trabalho. Visando a mxima qualidade, a K19 mantm as suas apostilas em constante renovao e melho-ria, oferece instalaes fsicas apropriadas para o ensino e seus instrutores esto sempre atualizadosdidtica e tecnicamente.www.k19.com.br1 5. S UMRIO2Seguro TreinamentoNa K19 o aluno faz o curso quantas vezes quiser!Comprometida com o aprendizado e com a satisfao dos seus alunos, a K19 a nica que pos-sui o Seguro Treinamento. Ao contratar um curso, o aluno poder refaz-lo quantas vezes desejarmediante a disponibilidade de vagas e pagamento da franquia do Seguro Treinamento. As vagas no preenchidas at um dia antes do incio de uma turma da K19 sero destinadas aoalunos que desejam utilizar o Seguro Treinamento. O valor da franquia para utilizar o Seguro Treina-mento 10% do valor total do curso.2www.k19.com.br 6. 3S UMRIOTermo de UsoTermo de UsoTodo o contedo desta apostila propriedade da K19 Treinamentos. A apostila pode ser utilizadalivremente para estudo pessoal . Alm disso, este material didtico pode ser utilizado como materialde apoio em cursos de ensino superior desde que a instituio correspondente seja reconhecida peloMEC (Ministrio da Educao) e que a K19 seja citada explicitamente como proprietria do material. proibida qualquer utilizao desse material que no se enquadre nas condies acima semo prvio consentimento formal, por escrito, da K19 Treinamentos. O uso indevido est sujeito smedidas legais cabveis. www.k19.com.br 3 7. S UMRIO4 TR EIN AM ENTR TO EINSTREINAMENTOSAM ENTOS Conhea os nossos cursosK01- Lgica de ProgramaoK11 - Orientao a Objetos em JavaK12 - Desenvolvimento Web com JSF2 e JPA2K21 - Persistncia com JPA2 e HibernateK22 - Desenvolvimento Web Avanado com JFS2, EJB3.1 e CDIK23 - Integrao de Sistemas com Webservices, JMS e EJBK31 - C# e Orientao a ObjetosK32 - Desenvolvimento Web com ASP.NET MVCwww.k19.com.br/cursos4www.k19.com.br 8. CAPTULOI NTRODUO 1 Sistemas CorporativosDicilmente, uma empresa consegue sobreviver sem auxlio de ferramentas computacionais. Al-gumas organizaes necessitam de ferramentas bsicas como editores de texto, planilhas ou gerado-res de apresentao enquanto outras necessitam de ferramentas especcas (sistemas corporativos)que contemplem todos os processos administrativos da organizao.Em geral, a complexidade no desenvolvimento e na manuteno de um sistema corporativo alta. Essa complexidade aumenta o custo e o tempo para desenvolv-lo e mant-lo.Tcnicas de programao como orientao a objetos, metodologias de gerenciamento comoscrum e ferramentas como Java podem diminuir o tempo e o dinheiro gastos na rea de TI. Orientao a ObjetosO paradigma de programao orientado a objetos estabelece princpios fundamentais referen-tes organizao de um software. Esses princpios podem diminuir consideravelmente o custo nodesenvolvimento e na manuteno de sistemas corporativos. Abaixo, algumas caractersticas dos sistemas orientados a objetos: Modularidade Encapsulamento PolimorsmoHoje em dia, a orientao a objetos o modelo de programao mais utilizado na modelagem desistemas corporativos. Padres de Projeto Apesar de especcos, os sistemas corporativos possuem diversas caractersticas semelhantes.Consequentemente, muitos problemas se repetem em contextos distintos.Suponha que um determinado problema ocorrer em duzentos sistemas diferentes. Em cadasistema, esse problema pode ser resolvido de uma forma distinta. Ento, globalmente, teramosduzentas solues para o mesmo problema. Provavelmente, algumas solues seriam melhores queoutras ou at mesmo uma delas melhor do que todas as outras. www.k19.com.br5 9. I NTRODUO6Para no perder tempo e dinheiro elaborando solues diferentes para o mesmo problema, po-deramos escolher uma soluo como padro e adot-la toda vez que o problema correspondenteocorrer. Alm de evitar o retrabalho, facilitaramos a co