Como estudar padrões de design? [fechado]

Eu li cerca de 4-5 livros sobre padrões de design, mas ainda não sinto que me aproximei do nível intermediário em padrões de design?

Como devo estudar padrões de design?

Há algum bom livro para padrões de design?

Sei que isto só virá com experiência, mas deve haver uma maneira de dominá-los.

Author: cristid9, 2008-11-24

23 answers

A melhor maneira é começar a codificar com eles. Padrões de Design são um grande conceito que são difíceis de aplicar a partir de apenas leitura sobre eles. Pegue algumas implementações de exemplo que você encontra online e construa em torno deles.

Um grande recurso é a Página Data & Object Factory. Eles analisam os padrões e dão exemplos conceituais e do mundo real. O material de referência deles também é óptimo.

 188
Author: Joseph Ferris, 2008-11-24 18:41:45
Li três livros e ainda não compreendia muito bem os padrões até ler os padrões de primeiro desenho da cabeça por OReilly. Este livro abriu-me os olhos e explicou-me muito bem.

alt text

 196
Author: Darren C, 2015-05-15 02:50:54
Os meus dois cêntimos por uma pergunta tão antiga. Algumas pessoas já mencionaram, praticar e refactorar. Eu acredito que a ordem certa para aprender sobre padrões é esta:
  1. aprender Desenvolvimento Orientado por testes (TDD)
  2. Aprenda a refactorar
  3. aprender padrões
A maioria das pessoas ignora o 1, Muitos acreditam que podem fazer o 2, e quase toda a gente vai directamente para o 3. Para mim, a chave para melhorar as minhas capacidades de software era aprender TDD. Pode ser um longo tempo de codificação dolorosa e lenta, mas escrever seus testes primeiro certamente faz você pensar muito sobre o seu código. Se uma classe precisa de muito bolilerplate ou quebra facilmente você começa a notar maus cheiros muito rápido O principal benefício da TDD é perder o medo de refactorar o seu código e forçá-lo a escrever aulas altamente independentes e coesas. Sem um bom conjunto de testes, é muito doloroso tocar em algo que não está quebrado. Com a rede de segurança você vai realmente aventura em mudanças drásticas no seu código. Esse é o momento em que você pode realmente começar a aprender com a prática. Agora vem o ponto em que você deve ler livros sobre padrões, e na minha opinião, é uma completa perda de tempo tentando demais. Eu só entendi os padrões muito bem depois de notar que eu fiz algo semelhante, ou eu poderia aplicar isso ao código existente. Sem os testes de segurança, ou hábitos de refactoração, eu teria esperado por um novo projeto. O problema de usar padrões em um fresco o projeto é que você não vê como eles impactam ou mudam um código de trabalho. Eu só entendi um padrão de software uma vez que eu refactored meu código em um deles, nunca quando eu introduzi um novo no meu código.
 72
Author: SystematicFrank, 2018-07-01 11:35:00
O Derek Banas fez tutoriais no youtube para padrões de desejo que eu gosto muito.

Http://www.youtube.com/playlist?list=PLF206E906175C7E07

Eles podem ser um pouco curtos no tempo, mas o seu timing e a sua apresentação tornam-nos muito divertidos de aprender.
 57
Author: Pedro Duarte, 2013-06-02 14:26:43
[1] Prática, Prática, Prática. Você pode ler sobre tocar violoncelo durante anos, e ainda não ser capaz de colocar um arco no instrumento e fazer qualquer coisa que soa como música.

Os padrões de Design são mais bem reconhecidos como um problema de alto nível; um que só é relevante se você tiver a experiência necessária para reconhecê-los como úteis. É bom que você reconheça que eles são úteis, mas a menos que você tenha visto situações onde eles se aplicariam, ou se aplicaram, é quase é impossível compreender o seu verdadeiro valor.

, Onde eles se tornam útil é quando você reconhecer padrões de projeto em outros' código, ou reconhecer um problema na fase de projeto que se encaixa bem com um padrão; e, em seguida, examinar o padrão formal, e examinar o problema, e determinar que a delta está entre eles, e o que isso diz sobre o padrão e o problema.

É realmente o mesmo que codificar; K&R pode ser a "Bíblia" para C, mas lê-la capa-a-capa várias vezes apenas não dá uma única experiência prática; não há substituto para a experiência.

 33
Author: Paul Sonier, 2008-11-24 18:55:02
Prática prática. Penso que 4 a 5 livros é mesmo um exercício de leitura excessivo sem uma boa quantidade de prática. A melhor maneira de fazer isso, EU ACREDITO, é começar refactorar seus projetos atuais usando os padrões. Ou se você não tem nenhum projeto que você está trabalhando ativamente em então apenas faça o seu próprio caminho e, em seguida, tente refactorar os padrões . Você não pode apreciá-los totalmente se você não sofreu com os problemas que eles resolvem. E por favor tenha em mente que eles não são balas de prata - você não precisa memorizá-los e pressioná-lo duro para aplicar na mosca. A minha opinião..
 23
Author: utku_karatas, 2008-11-24 19:00:49

Faça a si mesmo estas perguntas:

O que é que eles fazem? O que é que eles dissociam?

Quando deve usá-las?

Quando não os deve usar?

Que falta de linguagem faria com que desaparecessem? Em que dívida técnica incorre ao usá-la? Há uma maneira mais simples de fazer o trabalho?
 15
Author: gtrak, 2011-12-08 04:25:16

Foram dados muitos bons exemplos. Eu gostaria de adicionar um:

Aplicá-los mal. Você não precisa fazer isso intencionalmente, isso vai acontecer quando você tentar aplicá-los em seu Design-padrão-ajuste inicial. Durante esse tempo, todos os problemas que você vai ver parecerão encaixar exatamente um padrão de design. Muitas vezes, todos os problemas parecem se encaixar no mesmo padrão de design por alguma razão (Singelton é um candidato primário para isso).

E vais aplicar o padrão e vai ser bom. E alguns meses depois você vai precisar mudar algo no código e ver que usar esse padrão em particular não era tão inteligente, porque você se codificou em um canto e você precisa refazer novamente. É verdade que isso não é uma resposta de fazer isso e aprender em 21 dias, mas, pela minha experiência, é a mais provável que te dê uma boa visão do assunto.
 8
Author: Joachim Sauer, 2008-11-24 18:56:00
Descobri que é um pouco difícil compreender ou compreender os benefícios de alguns padrões até que um compreenda os problemas que resolve e o outro (pior) modo como os problemas foram implementados. Para além dos livros GOF e POSA, não os li, por isso não posso dar-lhe outras recomendações. Realmente você só tem que ter uma compreensão dos domínios de problemas e eu acho que muitos desenvolvedores menos experientes podem não ser capazes de apreciar os benefícios de padrao. Isto não é nada contra eles. É muito mais fácil abraçar, entender e apreciar boas soluções quando se tem que lutar com alternativas pobres primeiro. Boa sorte.
 7
Author: Tim, 2008-11-24 18:54:31
 5
Author: Rohit, 2008-11-24 18:44:26

Para livros, eu recomendaria Padrões de Design explicados, e Padrões de primeiro Design Head. Para realmente aprender esses padrões, você deve olhar para o seu código existente. Procure por que padrões você já está usando. Olha para os cheiros do código e que padrões podem resolvê-los.

 5
Author: David Nehme, 2008-11-24 19:00:40
Leu" Design Patterns Explained", de Allan Shalloway.

Este livro é muito diferente de outros livros de padrão de design porque não é tanto um catálogo de padrões, mas apresenta principalmente uma maneira de decompor um espaço problema que mapeia facilmente para padrões.

Os problemas podem ser decompostos em duas partes: coisas que são comuns e coisas que variam. Uma vez que isto é feito, mapeamos as coisas comuns para uma interface, e as coisas que variam para uma implementação. Em essence, many patterns fall into this "pattern". Por exemplo, no padrão estratégico, as coisas comuns são expressas como o contexto da estratégia, e as partes variáveis são expressas como as estratégias concretas. Achei este livro altamente estimulante em contraste com outros livros padrão que, para mim, têm o mesmo grau de excitação que ler uma lista telefónica.
 5
Author: Phillip Ngan, 2008-12-03 03:45:38

O mais recente de nettuts .

É um bom recurso para principiantes.
 5
Author: Jatin Dhoot, 2011-07-19 11:47:15

Liderei alguns grupos de discussão sobre padrões de design (o nosso site ) e li 5 ou 6 livros padrões. Eu recomendo começar com o primeiro livro de padrões de Design da cabeça e atender ou iniciar um grupo de discussão. O primeiro livro da cabeça pode parecer um pouco Hasboro no início, mas a maioria das pessoas gostam depois de ler um capítulo ou dois.

Use o recurso pendente - Joshua Kereivisky é um guia de aprendizagem para desenhar padrões para a ordenação de padrões e para ajudar o seu Coloquio. Por experiência própria, a única mudança que sugiro à ordem é colocar a estratégia em primeiro lugar. A maioria dos desenvolvedores de hoje experimentaram uma boa ou má encarnação de uma fábrica, então começar com a fábrica pode levar a muita conversa e confusão sobre o padrão.Isto tende a tirar o foco de como estudar e aprender padrões que é bastante essencial nessa primeira reunião.

 4
Author: JB Brown, 2008-11-24 19:00:55
Eu recomendo o Designpattern. Ler o livro não é suficiente, depois de assimilar os conceitos que você precisa para encontrar as respostas para muitas perguntas surgem em sua mente e tentar encontrar as aplicações da vida real onde nestes padrões podem ser usados. Estou a fazer o mesmo e comecei a fazer perguntas que até essas perguntas parecem tolas.
 3
Author: Rajkumar Vasan, 2011-12-15 13:38:16
A minha sugestão seria uma combinação de implementar alguns deles e analisar algumas implementações deles. Por exemplo, dentro do.Net, existem usos de padrões de adaptador se você olhar para adaptadores de Dados, bem como alguns outros, se você fizer um pouco de escavação no framework.
 2
Author: JB King, 2008-11-24 18:48:59
Não sei sobre o melhor livro, mas os puristas podem dizer padrões de Design: elementos de Software Reutilizável orientado a objectos

Quanto ao meu favorito, gosto dos primeiros padrões de Design da cabeça publicados por O'Reilly. Está escrito numa voz de conversa que me agrada. Quando o li, revi o meu código fonte ao mesmo tempo para ver se se aplicava ao que estava a ler. Se o fez, eu refactorei. Foi assim que aprendi a cadeia de responsabilidades.

[1] Prática-Prática-Prática.
 2
Author: Jason Slocomb, 2008-11-24 18:54:54

Padrões de Design são apenas ferramentas -- tipo funções de biblioteca. Se você sabe que eles estão lá e sua função aproximada, você pode ir desenterrá-los de um livro quando necessário.

Não há nada de mágico nos padrões de design, e qualquer bom programador imaginou 90% deles para si mesmo antes de qualquer livro sair. Para a maior parte eu considero os livros para ser mais útil em simplesmente definir nomes para os vários padrões para que possamos discuti-los mais facilmente.
 2
Author: Bill K, 2008-11-24 19:04:06
A forma como aprendi os padrões de design é escrevendo muitos softwares terríveis. Quando tinha 12 anos, não fazia ideia do que era bom ou mau. Acabei de escrever montes de código de esparguete. Nos próximos 10 anos, aprendi com os meus erros. Eu descobri o que funcionou e o que não. eu independentemente inventei a maioria dos padrões de design comuns, então quando eu ouvi pela primeira vez que os padrões de design eram, eu estava muito animado para aprender sobre eles, então muito desapontado que era apenas uma coleção de nomes para coisas que eu já conhecia intuitivamente. (aquela piada sobre ensinares-te a ti próprio C++ em 10 anos não é uma piada) Moral da história: escrever muitos códigos. Como outros já disseram, prática, prática, prática. Eu acho que até você entender por que seu projeto atual é ruim e ir à procura de uma maneira melhor, você não terá uma boa idéia de onde aplicar vários padrões de design. Design pattern books deve fornecer-lhe uma solução refinada e uma terminologia comum para discuti-la com outros desenvolvedores, não uma solução de colar para um problema que você não entende.
 2
Author: rmeador, 2008-11-24 19:13:22
A noção de que ler os padrões de design, praticar a codificação não vai ajudar a IMO. Quando lês estes livros 1. Procure o problema básico que um padrão de design particular resolve,começando com os padrões de criação é a sua melhor aposta. 2. Estou certo de que você escreveu código no passado, analisar se você enfrentou os mesmos problemas que os padrões de design visam fornecer uma solução. 3. Tente redesenhar o código ou talvez começar de novo.

Acerca dos recursos que pode verificar estes

  1. www.dofactory.com
  2. padrões de Design: elementos de Software Orientado a objectos reutilizáveis (Addison-Wesley Professional Computing Series) por Erich Gamma, Richard Helm, Ralph Johnson, e John M. Vlissides
  3. Padrões da Arquitectura de aplicações empresariais por Martin Fowler

1 é um arranque rápido, 2 será um estudo aprofundado..3 irá explicar ou deve fazer você pensar o que você aprendeu em 2 fits no software da empresa.

Os meus 2 cêntimos...
 2
Author: Perpetualcoder, 2008-11-24 19:56:41
Acho que também é difícil estudar padrões de design. Você tem que saber mais sobre OOP e algumas experiências com desenvolvimento de aplicações de médio a grande porte. Para mim, eu estudo como um grupo de desenvolvedores para fazer discussão. Seguimos um guia de aprendizagem para padrões de Design que completaram o estudo de padrões. Há desenvolvedores C# e JavaScript juntos. É uma coisa chique para mim é o desenvolvedor C# escrever códigos em JavaScript e o Desenvolvedor JavaScript fazer o mesmo coisa para códigos C#. Depois de sair de uma reunião, eu também pesquisei e li alguns livros em casa para rever. A melhor maneira de entender mais e lembrar em minha mente é blogar com exemplos em C# e JavaScript aqui http://tech.wowkhmer.com/category/Design-Patterns.aspx. Eu sugeriria primeiro antes de ir a cada padrão de design, por favor entenda o nome dos padrões. Além disso, se alguém conhece o conceito, por favor, explique e dê um exemplo não só programação, mas no mundo da leitura.

Por exemplo:

Método De Fábrica:

Leia o mundo: Eu apenas dou 5, 10 ou 20 dólares em dinheiro e ele produzirá pizza de volta sem saber nada sobre como ela produz, eu só recebo uma pequena, média ou grande pizza depende da entrada de dinheiro para que eu possa comer ou fazer o que quer que seja.

Programação: o cliente passa o valor do parâmetro $5, $10 ou $20 para o método da fábrica e devolverá o objecto da Pizza de volta. Para que o cliente possa usar esse objecto sem saber como processar.

Não sei se isto te pode ajudar. Depende do nível de conhecimento das pessoas se juntarem à reunião.
 1
Author: Vorleak Chy, 2008-11-27 04:39:36
Eu acho que você precisa examinar algumas das questões que você encontrou como desenvolvedor onde você puxou seu cabelo para fora depois que você teve que rever o seu código pela décima vez por causa de mais uma mudança de design. Você provavelmente tem uma lista de projetos onde você sentiu que havia um monte de retrabalho e dor.

A partir dessa lista você pode derivar os cenários que os padrões de Design pretendem resolver. Houve um tempo em que você precisava realizar a mesma série de ações em diferentes conjuntos de dados? Será que você precisa ser capaz de capacidade futura para uma aplicação, mas quer evitar a reformulação de toda a sua lógica para as classes existentes? Comece com esses cenários e retorne ao catálogo de padrões e seus respectivos problemas que devem resolver. É provável que você veja alguns jogos entre o GoF e sua biblioteca de projetos.

 1
Author: David Robbins, 2008-12-04 02:18:05

Para um principiante, os primeiros padrões de Design Da Cabeça bastariam, uma vez que estamos familiarizados com todos os padrões, e depois tentar visualizar os objectos em tempo real nesses padrões.

O livro irá ajudá-lo a compreender os conceitos básicos, a menos que até ter implementado no mundo real não possa ser um mestre dos padrões de DESIGN

 1
Author: gmhk, 2010-02-23 08:51:14