Não é trivial compreender bem os design patterns. Entender quando aplicá-los é algo que qualquer desenvolvedor deve saber. Nesse livro, você aprenderá com exemplos práticos e bem contextualizados como aplicar os padrões e em quais situações um é mais indicado que o outro. Diferencie as características particulares de cada padrão, crie aplicações que usam o melhor da orientação a objetos em seu favor e desenvolva aplicações que você conseguirá manter para sempre!
قائمة المحتويات
1 – Entendendo padrões de projeto
1.1 – Conceitos da orientação a objetos
1.2 – Mas esses conceitos não são suficientes?
1.3 – O primeiro problema: cálculo do valor do estacionamento
1.4 – Strategy: o primeiro padrão!
1.5 – O que são padrões?
1.6 – Como o livro está organizado
2 – Reúso através de herança
2.1 – Exemplo de padrão que utiliza herança – Null Object
2.2 – Hook Methods
2.3 – Revisando modificadores de métodos
2.4 – Passos diferentes na mesma ordem – Template Method
2.5 – Refatorando na direção da herança
2.6 – Criando objetos na subclasse – Factory Method
2.7 – Considerações finais do capítulo
3 – Delegando comportamento com composição
3.1 – Tentando combinar opções do gerador de arquivos
3.2 – Bridge – uma ponte entre duas variabilidades
3.3 – Hook Classes
3.4 – State – variando o comportamento com o estado da classe
3.5 – Substituindo condicionais por polimorfismo
3.6 – Compondo com múltiplos objetos – Observer
3.7 – Considerações finais do capítulo
4 – Composição recursiva
4.1 – Compondo um objeto com sua abstração
4.2 – Composite – quando um conjunto é um indivíduo
4.3 – Encadeando execuções com Chain of Responsibility
4.4 – Refatorando para permitir a execução de múltiplas classes
4.5 – Considerações finais do capítulo
5 – Envolvendo objetos
5.1 – Proxies e decorators
5.2 – Exemplos de Proxies
5.3 – Extraindo um Proxy
5.4 – Adaptando interfaces
5.5 – Considerações finais do capítulo
6 – Estratégias de criação de objetos
6.1 – Limitações dos construtores
6.2 – Criando objetos com métodos estáticos
6.3 – Um único objeto da classe com Singleton
6.4 – Encapsulando lógica complexa de criação com Builder
6.5 – Relacionando famílias de objetos com Abstract Factory
6.6 – Considerações finais do capítulo
7 – Modularidade
7.1 – Fábrica dinâmica de objetos
7.2 – Injeção de dependências
7.3 – Service Locator
7.4 – Service Locator versus Dependency Injection
7.5 – Considerações finais do capítulo
8 – Adicionando operações
8.1 – Classes que representam comandos
8.2 – Cenários de aplicação do Command
8.3 – Double Dispatch – Me chama, que eu te chamo!
8.4 – Padrão Visitor
8.5 – Considerações finais do capítulo
9 – Gerenciando muitos objetos
9.1 – Criando uma fachada para suas classes
9.2 – Separando código novo de código legado
9.3 – Mediando a interação entre objetos
9.4 – Reaproveitando instâncias com Flyweight
9.5 – Considerações finais do capítulo
10 – Indo além do básico
10.1 – Frameworks
10.2 – Utilizando tipos genéricos com os padrões
10.3 – Padrões com Test-driven Development
10.4 – Posso aplicar esses padrões na arquitetura?
10.5 – Comunidade de padrões
10.6 – E agora?
عن المؤلف
Eduardo Guerra é desenvolvedor de frameworks, editor-chefe da revista Mundo J e pesquisador do Instituto Nacional de Pesquisas Espaciais (INPE). Foi professor do Instituto Tecnológico de Aeronáutica (ITA), onde concluiu sua graduação, mestrado e doutorado. Suas pesquisas se concentram nas áreas de design, arquitetura e teste de software. Possui diversas certificações da plataforma Java e experiência como arquiteto de software. Participa de projetos de frameworks open-source, como Swing Bean, Esfinge e Class Mock. Ele acredita que um bom software se faz mais com criatividade do que com código e vive em busca de melhores formas para seu desenvolvimento. Está no Twitter como @emguerra.