Baixe o app para aproveitar ainda mais
Prévia do material em texto
Inicial (/blog/) Equipe (/blog/equipe.html) Sobre o Blog (/blog/sobre.html) Contato (/blog/contato.html) BUSCAR O que são Design Patterns? Por Jéssica Schissato (http://www.princiweb.com.br/blog/autor/jessica- schissato/) , Rodolfo Pereira (http://www.princiweb.com.br/blog/autor/rodolfo- pereira/) | 12 de março, 2012 | 19 comentários Design patterns (padrões de projeto) surgiram com a motivação de ajudar a solucionar problemas que ocorrem frequentemente, e, se usados com bom senso, podem se tornar ferramentas poderosas para qualquer desenvolvedor de software, uma vez que já foram testadas, utilizadas e aprimoradas a partir da experiência e conhecimento de outros programadores. CATEGORIAS DE POSTS ASP.NET (http://www.princiweb.com.br/blog/ Controle de Versão (http://www.princiweb.com.br/blog/ de-versao/) Design Patterns (http://www.princiweb.com.br/blog/ patterns/) Google APIs (http://www.princiweb.com.br/blog/ apis/) JavaScript (http://www.princiweb.com.br/blog/ Microsoft Azure (http://www.princiweb.com.br/blog/ azure/) TDD (http://www.princiweb.com.br/blog/ WordPress (http://www.princiweb.com.br/blog/ DESIGN PATTERNS (HTTP://WWW.PRINCIWEB.COM.BR/BLOG/PROGRAMACAO/DESIGN- PATTERNS/) ▼DESIGN ▼FRONT-END ▼MARKETING DIGITAL ▲PROGRAMAÇÃO EVENTOS (HTTP://WWW.PRINCIWEB.COM.B Preparamos um post explicando o que são design patterns e seus princípios comuns, baseado no livro “Professional ASP.NET Design Patterns” de Scott Millett. Tirinha retirada do site Vida de Programador (http://vidadeprogramador.com.br/), o qual publica tirinhas diárias com histórias engraçadas e verídicas sobre o dia-a-dia de um programador. Explicando Design Patterns Design patterns (Padrões de projeto) são soluções de templates abstratas de alto nível. Pense nelas como um “blueprint” (desenho técnico ou documentação de uma arquitetura, etc.) para soluções e não como uma solução por si própria. Você não achará um framework que você poderá simplesmente aplicar para a sua aplicação; ao invés disso, você chegará ao design patterns através da refatoração do seu código e generalização do seu problema. ASSINE NOSSO FEED RSS (HTTP://FEEDS2.FEEDBURNER.CO GESTÃO (HTTP://WWW.PRINCIWEB.COM.B LABS (HTTP://WWW.PRINCIWEB.COM.B NOVIDADES (HTTP://WWW.PRINCIWEB.COM.B PROJETOS (HTTP://WWW.PRINCIWEB.COM.B VAGAS (HTTP://WWW.PRINCIWEB.COM.B Design patterns não são somente aplicados em desenvolvimento de software; design patterns podem ser encontrados em diversas áreas da vida, da engenharia até da arquitetura. Em fato, foi o arquiteto Christopher Alexander que introduziu a ideia de patterns em 1970 para construir um vocabulário comum para discussões sobre design. Ele escreveu: Cada pattern descreve um problema que ocorre várias vezes ao nosso redor e com isso, descrevem a solução para o problema de uma maneira que você pode usar essa solução diversas vezes sem ter que fazer a mesma coisa duas ou mais vezes. Origem As origens do design patterns que prevalecem hoje na arquitetura de software nasceram das experiências e conhecimento dos programadores utilizando a programação orientada a objeto. O conjunto dos mais conhecidos design patterns estão catalogados no livro chamado “Design Patterns: Elements of Reusable Object- Oriented Software”, mais conhecido como “Design Patterns Bible”. Esse livro foi escrito por Erich Hamma, 1 Google Maps API v3: Criando um mapa personalizado (http://www.princiweb.com.br/blo apis/google-maps-api-v3-criando- um-mapa-personalizado.html) 2 Google Maps API v3: Criando rotas entre múltiplos pontos (http://www.princiweb.com.br/blo apis/google-maps-api-v3-criando- rotas-entre-multiplos- pontos.html) 3 Google Maps API v3: Busca de endereço e Autocomplete (http://www.princiweb.com.br/blo apis/google-maps-api-v3-busca- de-endereco-e- autocomplete.html) 4 Menu drop-down responsivo (http://www.princiweb.com.br/blo end/css/menu-drop-down- responsivo.html) 5 Utilizando a API do Google Analytics com ASP.NET MVC e C# (http://www.princiweb.com.br/blo apis/utilizando-a-api-do-google- analytics-com-aspnet-mvc-e- csharp.html) POSTS MAIS COMENTADOS CURTA NO FACEBOOK /PRINCIWEB (HTTP://WWW.FACEBOOK.COM ÚLTIMOS TWEETS RT @CampusPartyBRA (http://www.twitter.com/CampusPartyBRA A USE trás pra #CPBR um debate sobre o sistema de nomes de domínios (DNS root) da Internet: quem administra? Como funci… 03 fev 2018 RT @CampusPartyBRA (http://www.twitter.com/CampusPartyBRA O 4° dia de #CPBR11 foi SENSACIONAL! Quem vive a Campus Party, vive a tecnologia no seus estágios mais surpreendentes.… 03 fev 2018 Hoje mais cedo, teve “Café com Quê?” a vivo, com a participação do grande @iberethenorio (http://www.twitter.com/iberethenorio) do @manualdomundo (http://www.twitter.com/manualdomundo https://t.co/iK22LzJ2Yl (https://t.co/iK22LzJ2Yl) Richard Helm, Ralph Johson e John Vlissdes, mais conhecidos como “Gang of Four”. Eles coletaram 23 design patterns e organizaram em 3 grupos: Creational Patterns (Padrões de Criação): Tratam da construção do objeto e o de referência; Structural Patterns (Padrões Estruturais): Tratam da relação entre objetos e como eles interagem entre sim para formarem grandes objetos complexos; Behavioral Patterns (Padrões Comportamentais): Tratam da comunicação entre os objetos, especialmente em termos de responsabilidade e de algoritimos. Utilidade O valor dos design patterns reside no fato que eles são soluções que foram utilizadas e testadas, o que nos dá confiança em sua eficácia. Design patterns focam na reutilização de soluções. Todos os problemas não são iguais, mas se você puder “quebrar” o problema e achar similiaridades com problemas que você já resolveu antes, você pode aplicar essas soluções. Depois de décadas de programação orientada a objeto, a maioria dos problemas que você encontrará já terão sido resolvidas no passado, e haverá um pattern disponível para 02 fev 2018 RT @anyssaferreira (http://www.twitter.com/anyssaferreira): É amanha! Me preparando para ministrar um bom Workshop de WordPress na Campus Party #CPBR11 https://t.co/3sDam20Xpm (https://t.co/3sDam20Xpm) 02 fev 2018 @AGENCIAWEB (HTTP://WWW.TWITTER.COM/A VISITE NOSSO SITE Entre no site e conheça melhor a nossa agência, soluções, portfolio e entre em contato. Acesse: www.princiweb.com.br (http://www.princiweb.com.br) ajudar você na implementação da solução. Mesmo se você acredita que o seu problema é único, ao quebrá-lo em pequenas partes, você será capaz de generalizá-lo o suficiente para encontrar a solução apropriada. O nome dos design patterns são úteis porque refletem o seu comportamento e propósito, e fornecem um vocabulário comum em um brainstorming de solução. É muito mais fácil falarmos em termos do nome do pattern do que detalhar sobre como essa implementação deveria funcionar. O que eles não são Design patterns não são a bala de prata (solução de todos os problemas). Você deve ter o entendimento geral do seu problema, generalizá-lo e então aplicar o pattern apropriado para a solução desse problema. Porém, nem todos os problemas requerem um design pattern. É verdade que o design pattern pode ajudar a tornar problemas complexos em problemas simples, porém eles também podem tornar problemas simples em problemas complexos. Princípios comuns de design Há diversos princípios comuns de design, que, assim como os design patterns, se tornaram boas práticas através dos anos e ajudaram a formar uma fundação no qual o nível empresarial e software de fácil manutenção podem ser construídos. Abaixo, segue um resumo dos princípios mais conhecidos:Keep It Simple Stupid (KISS) Mantenha Isto Estupidamente Simples Um problema comum em programação de software é a necessidade de complicar demais a solução. O objetivo do princípio KISS é manter o código simples, mas não simplista, assim evitando complexidade desnecessária. Don’t Repeat Yourself (DRY) Não Repita Você Mesmo O princípio do DRY é evitar a repetição de qualquer parte do sistema abstraindo as coisas que são comuns entre si e colocá-las em um lugar único. Esse princípio não se preocupa somente com o código, mas qualquer lógica que está duplicada no sistema. Tell, Don’t Ask Fale, não pergunte O principio Tell, Don’t Ask está estreitamente alinhado com o encapsulamento e a atribuição de responsabilidades para as suas classes corretas. O princípio afirma que você deve dizer aos objetos quais ações você quer que eles realizem, ao invés de fazer perguntas sobre o estado do objeto e então tomar uma decisão por si próprio em cima da ação que você quer realizar. Isso ajuda a alinhar as responsabilidades e evitar o forte acoplamento entre as classes. You Ain’t Gonna Need It (YAGNI) Você Não Vai precisar Disso O princípio YAGNI se refere a necessidade de adicionar somente as funcionalidades que são necessárias para a aplicação e deixar de lado qualquer tentação de adicionar outras funcionalidades que você acha que precisa. A metodologia de projeto que adere ao YAGNI é a test-driven development (TDD) – desenvolvimento orientado a testes. TDD se baseia na escrita de testes que comprovam a funcionalidade do sistema e então escrevem somente o codigo para obter êxito no teste. Separation Of Concerns (SoC) Separação de Responsabilidades SoC é o processo de dissecação de uma parte de software em distintas características que encapsulam um único comportamento e dados que podem ser utilizados por outras classes. Geralmente, a responsabilidade representa uma características ou comportamento da classe. O ato de separar um programa em discretas responsabilidades aumenta significativamente a reutilização de código, manutenção e testabilidade. Curtir 70 Tweetar Tweet (http://twitter.com/share) Inversão de Controle (IoC) e Injeção de Dependência (DI) no C#: desacoplando sua aplicação e facilitando seus testes (http://www.princiweb.com.br/b patterns/inversao-de-controle- ioc-e-injecao-de- Fonte: Professional ASP.NET Design Patterns (http://www.wrox.com/WileyCDA/WroxTitle/Professional- ASP-NET-Design- Patterns.productCd- 0470292784.html) (http://www.princiweb.com.br/blog/autor/jessic schissato/) Jéssica Schissato (http://www.princiweb.com.b schissato/) Desenvolvedora Web Saiba mais (http://www.princiweb.com.br/blo schissato/) (http://www.princiweb.com.br/blog/autor/rodo pereira/) Rodolfo Pereira (http://www.princiweb.com.b pereira/) Programador Web Saiba mais (http://www.princiweb.com.br/blo pereira/) ARTIGOS RELACIONADOS dependencia-di-no-csharp- desacoplando-sua-aplicacao- e-facilitando-seus-testes.html) O que é e como utilizar o padrão View Model em um projeto ASP.NET MVC (http://www.princiweb.com.br/b patterns/o-que-e-e-como- utilizar-o-padrao-view-model- em-um-projeto-aspnet- mvc.html) Nome: * Email: * COMENTAR Deixe um comentário Queremos saber o que você pensa sobre esse post! Ficaremos felizes se você nos deixar um comentário :-) Tenha em mente que os comentários são moderados, e os links possuem rel="nofollow". Então por favor, não faça spam de palavras-chave, senão o seu comentário será excluído. Obrigado! Comentário: * Notifique-me por email ao receber respostas a este comentário. [19] Comentários Responder Responder Responder Responder Responder Rafaela – Tudo em Foco Muito explicativo esse artigo. Muitas vezes, a pessoa até tem certo conhecimento, mas não sabe como utilizar os design patterns. Isso pode afetar bastante o trabalho, deixando mais moderado e o resultado também pode acabar sendo afetado com isso. Acho que é importante explicar exatamente para que servem e como utilizar e isso foi muito bem feito no texto. 13-03-2012 às 22:01 Brayan Dichtl Muito bom o esclarecimento de Design Patterns abordado… 19-06-2013 às 20:59 isNil É isso aí, conceitos que fazem a diferença na produção de códigos limpos e com qualidade. 30-09-2013 às 15:27 Vinícius Stutz (vinicius- stutz.com) Muito legal mesmo seu artigo, todo desenvolvedor .net tinha que ler! Parabéns! 06-12-2013 às 18:08 Gabber Bacana o post, porém gostaria de saber como funciona na prática! 10-12-2013 às 10:10 Angelito Ótimo post, parabéns! ;) Responder Responder Responder Responder 20-02-2014 às 07:35 Matheus Achei excepcional a explicação e o assunto é muito interessante!!! Talvez deste artigo tenha surgido o assunto a ser abordado no TCC do meu curso de Análise e Desenvolvimento! Parabéns! 28-02-2014 às 21:58 Leonardo Muito bom mesmo, ótimo artigo! 04-05-2014 às 10:30 Francisco G Lima Muito bom. O post na sua simplicidade mostra os conceitos e deixa tudo muito bem claro. Agora vou ver onde consigo ver casos de uso na plataforma dot.net. Vocês teriam alguma posto ou link com exemplos? 19-08-2014 às 10:09 Rodolfo Pereira (http://www.princiweb.com. pereira/) Em resposta a Francisco G Lima Fala Francisco, Temos alguns posts que mostram na prática a utilização de alguns Design Patterns no ASP.NET: http://www.princiweb.c patterns/ (http://www.princiweb.com.br/b patterns/) Responder Responder Responder Responder Para um melhor estudo, recomendo este livro: http://www.wrox.com/Wile ASP-NET-Design- Patterns.productCd- 0470292784.html (http://www.wrox.com/WileyCDA ASP-NET-Design- Patterns.productCd- 0470292784.html) Abs! 15-10-2014 às 11:08 Eliomar Em resposta a Rodolfo Pereira Valeu!!!! Bem explicativo. 05-03-2015 às 08:55 Tiago Somente depois que tive contato com métodos ágeis é que conheci esses princípios, e desde então procuro trabalhar baseados neles e também em S.O.L.I.D, mas o que me frusta é que ainda não se da a devia importância sobre esse tema em faculdades, cursos e principalmente no trabalho. 05-07-2015 às 08:48 Rodrigo Copiou isso do Macoratti? Ao menos cite a fonte... 11-09-2015 às 18:24 Rodolfo Pereira (http://www.princiweb.com. pereira/) Em resposta a Rodrigo Responder Responder Responder Responder Oi Rodrigo, Não copiamos do Macoratti... a fonte deste post foi o livro Professional ASP.NET Design Patterns. Vou atualizar o post :) Abs! 17-09-2015 às 12:54 Luciano Achei muito interessante, embora estou apenas começando a aprender. 17-02-2016 às 09:48 Jonatas Santos Parabéns pelo artigo e muito obrigado por compartilhar! Me ajudou bastante :D 15-06-2016 às 13:47 ICARO REGO Nossa, muito bom o post! Passei meia hora procurando material sobre esse assunto. 10-08-2016 às 21:26 Carlos Bueno Muito bom artigo. Sempre prego, que esse conteúdo deve estar na ponta da língua para desenvolvedores OO. Escrevi um livro sobre o assunto pela Editora Casa do Código, acredito que o conteúdo é bem complementar ao que foi tratado aqui, adoraria saber sua opinião sobre ele, caso queira posso encaminhar uma cópia pra ti, mas segue link do livro: Responder Responder https://www.casadocodigo.com.br guia-mestre-programador (https://www.casadocodigo.com.b guia-mestre-programador) 20-06-2017 às 22:46 Adriano Hendler Obrigado, esta muito bem explicado. 03-08-2017 às 14:26 Inicial (/blog/) Equipe (/blog/equipe.html) Sobre o Blog (/blog/sobre.html) Contato (/blog/contato.html) Criação e desenvolvimento TOPO
Compartilhar