No meu livro "Métricas para Desenvolvedores" consegui reunir 2 assuntos que me fascinam: Contagem (técnica por Ponto de Função e PCU) e Padrões de Projeto. Procurei mostrar, na visão do desenvolvedor, como encarar esses assuntos como alguém que não possui o menor conhecimento sobre ambos mas se vê obrigado a entendê-los para não ficar fora do mercado.
Muitas pessoas acham que por estarem programando em Java estão consequentemente programando Orientado a Objetos (vou abreviar para OO), entendamos de uma vez por todas que Orientação a Objetos é um conceito e não uma Linguagem. Projetar software OO é difícil, e projetar software OO reusável é mais difícil ainda.
É responsabilidade do Arquiteto projetar um software OO, e isso significa que é necessário encontrar os objetos pertinentes, fatorá-los em classes na granularidade certa, definir interfaces de classes e hierarquias de herança, e estabelecer relacionamentos chave entre elas. É muito complicado achar objetos reusáveis na primeira tentativa.
Para tentar resolver este problema surgiram os Padrões de Projeto que são formas de capturar soluções desenvolvidas e evoluídas com o passar do tempo, só existe um problema quanto a eles, cada padrão descreve um problema que ocorre frequentemente no ambiente, e então descreve a solução para aquele problema, de um modo tal que pode-se usar essa mesma solução. Resumidamente: Um Problema Específico, Uma Solução Específica.
Um dos primeiros livros que surgiu a esse respeito foi "Padrões de Projeto - Soluções Reutilizaveis de Software Orientado a Objetos" de Erich Gamma, John Vlissides, Ralph Johnson, e Richard Helm (atenção os códigos descritos neste livro estão em linguagem C++ e Smalltalk). Esses quatro autores se denominaram "Gang of Four" ou simplesmente GoF. Então é comum ouvir falar de: "Padrões do GoF". No livro trataram de 23 padrões, tal como descritos na seguinte imagem:
Dividiram seus padrões em 3 categorias: Criacionais (em amarelo) trata da melhor maneira de se construir um objeto, Comportamentais (em verde) estão mais voltados as comunicações entre os objetos e Estruturais (em azul) como as classes devem ser combinadas para formar estruturas mais complexas.
No meu livro expus para cada padrão um problema e como resolvê-lo em Java. Por questões de direito autoral não posso descrevê-los aqui. Porém o pessoal do Java Code Geeks criou um excelente curso (em inglês) expondo cada um desses padrões.
Obrigado e até a próxima
Fernando Anselmo
Muitas pessoas acham que por estarem programando em Java estão consequentemente programando Orientado a Objetos (vou abreviar para OO), entendamos de uma vez por todas que Orientação a Objetos é um conceito e não uma Linguagem. Projetar software OO é difícil, e projetar software OO reusável é mais difícil ainda.
É responsabilidade do Arquiteto projetar um software OO, e isso significa que é necessário encontrar os objetos pertinentes, fatorá-los em classes na granularidade certa, definir interfaces de classes e hierarquias de herança, e estabelecer relacionamentos chave entre elas. É muito complicado achar objetos reusáveis na primeira tentativa.
Para tentar resolver este problema surgiram os Padrões de Projeto que são formas de capturar soluções desenvolvidas e evoluídas com o passar do tempo, só existe um problema quanto a eles, cada padrão descreve um problema que ocorre frequentemente no ambiente, e então descreve a solução para aquele problema, de um modo tal que pode-se usar essa mesma solução. Resumidamente: Um Problema Específico, Uma Solução Específica.
Um dos primeiros livros que surgiu a esse respeito foi "Padrões de Projeto - Soluções Reutilizaveis de Software Orientado a Objetos" de Erich Gamma, John Vlissides, Ralph Johnson, e Richard Helm (atenção os códigos descritos neste livro estão em linguagem C++ e Smalltalk). Esses quatro autores se denominaram "Gang of Four" ou simplesmente GoF. Então é comum ouvir falar de: "Padrões do GoF". No livro trataram de 23 padrões, tal como descritos na seguinte imagem:
Dividiram seus padrões em 3 categorias: Criacionais (em amarelo) trata da melhor maneira de se construir um objeto, Comportamentais (em verde) estão mais voltados as comunicações entre os objetos e Estruturais (em azul) como as classes devem ser combinadas para formar estruturas mais complexas.
No meu livro expus para cada padrão um problema e como resolvê-lo em Java. Por questões de direito autoral não posso descrevê-los aqui. Porém o pessoal do Java Code Geeks criou um excelente curso (em inglês) expondo cada um desses padrões.
23 Padrões de Projeto do GoF aplicados em Java
- Introdução aos Padrões de Projeto
- Criacionais
- Comportamentais
- Template Method
- Strategy
- Command
- Memento
- Mediator
- State
- Observer
- Iterator
- Chain of Responsibility
- Interpreter
- Visitor
- Estruturais
Obrigado e até a próxima
Fernando Anselmo