Buscar

O que são Design Patterns

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

Continue navegando