Pular para o conteúdo principal

Design Patterns - Será que preciso aprender?

O termo Design Patterns (padrões de projeto) foi criado originalmente pelo engenheiro Christopher Alexander para documentar as soluções de projeto comumente utilizados na construção civil. Mais tarde, o termo passou a ser utilizado na área de informática como forma de descrever soluções para problemas encontrados no projeto de software orientado a objetos.

Com o surgimento dos frameworks mais modernos como JBoss Seam, Spring, entre outros, muito se tem discutido a respeito da importância dos Design Patterns.

Na época em que o programador escrevia grande parte do código de controle das aplicações, padrões como Singleton, Façade, DAO, Chain of Responsability, Command, entre outros, eram frequentemente utilizados para criar os pontos de extensão da aplicação, por onde novas funcionalidades podiam ser criadas sem a necessidade de mudanças drásticas no código existente.

Como atualmente a maioria das aplicações é construída sobre um framework, muitos desses padrões já estão incorporados ao projeto por fazerem parte dos frameworks. Por isso, especialistas garantem que nós não precisamos mais utilizar muitos dos Design Patterns existentes.

De fato, se pensarmos em usar os design patterns para resolver os problemas do núcleo da nossa aplicação, realmente eles não precisam ser implementados diretamente pelo programador. Porém, vários Design Patterns vão muito além dessa forma de utilização e apresentam soluções valiosíssimas para questões particulares de cada projeto. Problemas como a necessidade de executar regras específicas com base num modelo de herança complexo ou no estado de um objeto podem ser facilmente resolvidos usando Design Patterns que, além de padronizar o código, oferece facilidades para extender/alterar o modelo futuramente. Alguns exemplos de padrões que atacam essa linha são Strategy, State, Bridge, Decorator, entre outros.

Portanto, mesmo construindo aplicações a partir dos frameworks mais modernos, o conhecimento sobre Design Patterns continua sendo de grande importância para quem trabalha com linguagens orientadas a objetos, como Java, C#, etc.

E mais importante do que saber como implementar um Design Pattern, é saber qual é o problema que você pode resolver com cada padrão. Eu já ouvi várias pessoas dizendo que não entendem os padrões ou que não sabem como fazer uso eficiente deles. Isso certamente acontece porque os problemas resolvidos pelos padrões não são conhecidos.

Para quem quer começar a estudar Design Patterns, a referência principal é o catálogo GoF no livro "Padrões de Projeto - Soluções Reutilizáveis de Software Orientado a Objetos", Gamma E. et al. Esse livro descreve 23 padrões que se aplicam aos mais diferentes problemas de orientação a objetos.

Mas se você for a favor de cursos, relembrando o post do nosso amigo Julio Viegas sobre livro ou curso, a Globalcode tem um minicurso gratuito de 3hs - Introdução a Design Patterns - cujo objetivo é introduzir o conceito de Design Patterns e falar sobre alguns dos padrões mais conhecidos. Uma outra opção, mais apronfundada, é o curso - Core Patterns - de 40hs que trata dos 23 design patterns do GoF e outros 10 do catálogo Java EE BluePrints, com uma abordagem bastante voltada para os problemas resolvidos pelos padrões.

Para quem está lendo esse post em tempo, dia 19 de agosto eu mesma irei ministrar o minicurso de design patterns na Globalcode. Para se inscrever nesse minicurso ou ver outras datas disponíveis acesse o site da Globalcode.

Uma outra fonte de informação é uma entrevista onde comento um pouco mais sobre o que são os Design Patterns e como identificar a necessidade de utilizá-los em nossos projetos.

Comentários

Marcio Duran disse…
Acredito que o assunto pode mesmo também ser debatido em ambito de como eu indentifico o modelo para o think patterns a ser utilizado.

Quero aqui deixar um link que fala sobre algo já discutido nesse portal.

Compondo seu comportamento: herança, Chain of Responsibility e Interceptors

http://blog.caelum.com.br/2010/06/28/compondo-seu-comportamento-heranca-chain-of-responsibility-e-interceptors/

Nesse link foi observado se Singleton não seria o canditado ao patterns de controle.

Nesse outro link são demonstra exemplo em experiência ao Padrões de Projetos.

http://www.javabuilding.com/academy/patterns.html

Dizer que a industria já fornece os desing patterns que já são vinculados em seus frameworks em regra temos um modelo default mas na certa refatorações e transformações vão ocorrer a não ser que já seja algo em propriedade ou lincença para suporte de algum fornecedor.

Postagens mais visitadas deste blog

10 reasons why we love JSF

1. One-slide technology: it's so simple that I can explain basic JSF with one slide. 2. Easy to extend: components, listeners, render kit, Events, Controller, etc. 3. Real-world adoption: JBoss, Exadel, Oracle, IBM, ... 4. Architecture model: you can choose between more than 100 different architecture. 5. Open-mind community: using JSF you are going to meet very interesting people. 6. We are using JSF the last 5 years and we found very good market for JSF in Brazil 7. Progress: look to JSf 1.1 to JSF 1.2, JSF 1.2 to JSF 2.0. People are working really hard! 8. Many professionals now available 9. It's a standard. It's JCP. Before complain, report and help! 10. Ed Burns, spec leader, is an old Globalcode community friend! EXTRA: My wife is specialist in JSF. She's my F1 for JSF :) Nice job JSF community! -Vinicius Senger

Palestras do TDC Business Disponíveis Online

🚨 Atenção, TDC Lovers! O TDC Business em São Paulo acabou, mas os conteúdos mal começaram!  Não pô de aproveitar a STADIUM ao vivo? Não tem problema, porque trouxemos ela até você. Todas as palestras da STADIUM, palco principal do TDC, já estão no ar e liberadas para qualquer pessoa assistir. Essa Trilha incrível conta com palestras de Trilhas Premium e temas variados de forma GRATUITA para você poder maratonar de casa!  Aproveite para prestigiar seu evento de TI favorito com pipoca direto do seu sofá. 🎥 🍿 Gravação da STADIUM, 22 a 24 de Agosto de 2022, disponível aqui: https://www.globalcode.com.br/videos/tdc-2022-business/  Todas as demais trilhas do TDC Business serão publicadas gradualmente nas próximas semanas, fique atento aos nossos e-mails, você será notificado por lá quando sua Trilha estiver disponível. Acompanhe nossas redes sociais para não perder nada e ficar por dentro de todas as novidades do TDC!

TDC ONLINE: SUA PLATAFORMA DE PALESTRAS GRAVADAS DO TDC DISPONÍVEL

Além do conteúdo ao vivo transmitido online nas edições do TDC, agora você pode ter acesso à centenas de palestras gravadas, através da nossa nova plataforma de vídeos - o TDC Online, que reúne todas as Trilhas premium, Stadium e Salas dos Patrocinadores das edições anteriores de 2022, TDC Innovation e TDC Connections.  Para acessar, basta clicar na edição em que você participou ( TDC Innovation ou TDC Connections ); Fazer o mesmo login (com e-mail e senha) cadastrados na hora de adquirir ou resgatar o seu ingresso no TDC; E clicar na Trilha de sua opção, e de acordo com a modalidade do seu ingresso. Logo em seguida, você será direcionado para a seguinte página com a lista de todas as palestras por Trilha: Pronto! Agora você tem acesso à centenas de palestras gravadas da sua área de interesse, para assistir como e quando quiser! Caso tenha esquecido a senha, clique na opção "Esqueci a senha" , insira o e-mail que você realizou para o cadastro no evento, e aparecerá a op

TDC INNOVATION lança University Pass

Modalidade de ingresso tem como objetivo ajudar na capacitação dos universitários Uma pesquisa realizada em 2020 pela Associação Brasileira das Empresas de Tecnologia da Informação e Comunicação (Brasscom) diz que até o ano de 2024 o Brasil precisará de cerca de 420 mil profissionais na área de Tecnologia da Informação. Porém, por ano, a mesma pesquisa diz que o país forma apenas 46 mil profissionais capacitados no nicho. Pensando nisso, para ajudar na formação e capacitação desses jovens profissionais, o TDC INNOVATION, segunda edição do ano do The Developer's Conference, lança o University Pass, modalidade de ingresso que possibilita aceso digital gratuito a todas as palestras do evento, ou com 50% de desconto para quem preferir ir pessoalmente. Com o tema central “Desafios para a criação do futuro Digital”, o TDC INNOVATION ocorrerá entre 1 e 3 de junho, de forma híbrida: presencialmente no Centro de Convenções CentroSul, em Florianópolis, e com transmissão simultaneamente pela

Inspire a mudança com a liderança ágil

A liderança ágil é essencial para que uma organização realize mudanças de negócios significativas. Ser líder é uma tarefa desafiadora, especialmente em um cenário de constantes transformações, principalmente na forma de lidar com a relação empresa e pessoal. Pesquisas sobre liderança na era digital revelam que algumas soft skills têm sido substituídas por outras, o profundo conhecimento na área de negócio, ser referência nas tecnologias utilizadas, ter foco total no prazo e nas entregas e conhecer um arsenal de técnicas e ferramentas, têm dado espaço a habilidades, como: empatia; adaptabilidade; senso de equipe; visão e propósito; engajamento constante. A colaboração entre pessoas de todos os níveis hierárquicos são vitais, afinal, as equipes estão trabalhando para o mesmo objetivo: o encantamento e atendimento das necessidades do cliente que proporcionarão um crescimento sustentável da organização. Com propósito claro, estratégia e prioridades definidas, os times desfrutam de uma ma

Facelets ainda mais divertido! Parte II

De volta ao Facelets , na primeira parte mantive o foco na utilização de templates e técnicas de reutilização visando maior agilidade para desenvolver telas com JSF , mas o Facelets vai bem além disso! Nesse post vou comentar e mostrar um pouco sobre a criação de componentes UI (User Interface) usando xht ml - na minha opinião esse é o grande diferencial da tecnologia. Com esse recurso é possível customizar / padronizar componentes usando xhtml + tags JSF + JavaScript + Css, sem código Java. A ideia é bem próxima ao Tag File em uma rápida comparação com JSP (JavaServer Pages), mas no caso do Facelets feito de uma forma ainda mais simples e com aderência a (infra)estrutura do JSF. Vou descrever o mesmo cenário da primeira parte, um sistema composto por vários cadastros ( C reate R ead U pdate D elete). Pensando especificamente em cada formulário, usando como exemplo um rascunho ou protótipo para o cadastro de Fornecedores, podemos assumir o seguinte formato: campos para preenchi