Eu sou um novato confuso e programador amador tentando entender isso, então me perdoe se minha pergunta for um pouco errada ou não fizer muito sentido.
Vejo muitas perguntas sobre o SO girando em torno do uso de padrões de design e me pergunto se alguém tem bons recursos para aprender e implementar padrões de design? Eu entendo a ideia geral e sei como / quando usar alguns deles (Singletons, métodos de fábrica), mas sei que estou perdendo.
(Caso seja importante, minha linguagem de preferência é C #, mas eu poderia aprender com exemplos em outras linguagens)
fonte
Os padrões de design são ótimos por vários motivos:
Mas quando seu objetivo é apenas aprender padrões de design, acho que você está perdendo os fundamentos. Todos os padrões de design são baseados em princípios mais comuns. Princípio de alta coesão, baixo acoplamento aberto fechado, DRY, princípio de substituição de Liskov etc. Para esses fundamentos, eu leria os seguintes livros nesta ordem:
Depois disso, você está pronto para a gangue básica de quatro padrões de design
O próximo passo:
E lembre-se sempre: o padrão não é o objetivo!
fonte
Eu acrescentaria que o livro Design Patterns da "Gang of Four" é uma bíblia para quem está seriamente interessado em padrões de design.
fonte
Minha dica:
Leia muito sobre os padrões de diferentes fontes.
Tentar forçar o máximo de padrões possíveis em todo o código que você está escrevendo, pois neste ponto, não vai dar bons resultados. Em vez disso, deixe a informação descansar dentro de seu cérebro por um tempo (leia-se: meses).
De repente, você se deparará com um problema ou parte do código e lembrará vagamente que viu algo que pode funcionar como uma solução para esse problema específico. Agora é a hora de examinar os detalhes do padrão em que você está pensando e tentar aplicá-lo.
Isso é o que funcionou para mim, de qualquer maneira.
fonte
Padrões de design
Este site de tutorial contém as seguintes subseções
Este site também contém um guia sobre Anti-Patterns , UML e Refatoração .
fonte
Bruce Eckel tem um livro sobre padrões de design , embora seja Java, é como todos os seus livros incríveis. E o melhor é que são grátis!
fonte
Padrões de projeto C # 3.0 para uma perspectiva C # sobre padrões de projeto.
(fonte: oreilly.com )
fonte
Um livro introdutório que achei útil e bem escrito é Design Patterns Explained por Alan Shalloway e James Trott (Addison Wesley).
Você não começar a partir do Gang of Four livro, pois não é um livro introdutório, por qualquer meio.
fonte
Eu recomendaria dar uma olhada na quintologia de Jean Paul Boodhoo (?) Em Desmistificando Padrões de Design em DNRtv, urls fornecidas abaixo. Os videocasts abordam Singleton, Abstract Factory, entre outros - a diferença é que você pode vê-lo codificar enquanto discute a teoria. É bom cuidar do almoço em um dia chuvoso da semana.
http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum= 68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92
fonte
Uma anotação para os comentários acima.
Uma referência rápida para padrões GOF
Este é um bom lugar onde você pode começar dofactory.com/patterns/patterns.aspx - você pode encontrar o link para cada padrão, junto com as implementações correspondentes.
No entanto, lembre-se de que esses são padrões GOF. Você também pode precisar ler e compreender os padrões avançados, uma vez que você obtenha experiência suficiente em OOAD. Use Head First Design Patterns é um bom começo e, depois de fazer algum progresso, vá com os Enterprise Application Architecture Patterns de Martin Fowler.
Aplicando Padrões de Design - O Processo de Pensamento
Outro aspecto principal - Aplicar padrões de design é tão importante quanto apenas conhecê-los. A leitura desses artigos também pode ajudá-lo.
Aplicando Padrões de Projeto Parte I
Aplicando Padrões de Projeto - Parte II
Espero que isto ajude
fonte
Head First Design Patterns é bom, como outros já mencionados. Além disso, é claro o livro original e C # Design Patterns. Também existem bons sites já mencionados.
Além da autoaprendizagem, recomendo seriamente começar ou frequentar um grupo de estudos de padrões em sua área. Veja um Guia de Aprendizagem para Padrões de Projeto para obter uma explicação e uma ótima ordem para estudar os padrões. Fizemos isso e posso dizer honestamente que não entenderia tanto quanto entendo agora. Uma reunião semanal com outras pessoas interessadas mantém você surpreendentemente disciplinado ao aprender algo abstrato, como padrões de projeto.
Bons estudos!
fonte
Antes de gastar dinheiro em livros, eu recomendaria a excelente página de padrões de design da Wikipedia . Também procure algo diferente no Google para "screencasts de padrões de design" ou pesquise "padrões de design" no YouTube . Obter as mesmas informações apresentadas de maneira diferente geralmente ajuda a diminuir o centavo.
O livro Gang of Four é o texto definitivo sobre os padrões mais conhecidos, mas não é tão fácil de ler e com exemplos de C ++ nem todos os favoritos.
O texto Head First Design Patterns é muito mais acessível, mas contém apenas um subconjunto dos padrões da Gang of Four.
O mais importante é entender onde e por que um determinado padrão é útil. Em seguida, pesquise na web por exemplos de implementação na linguagem de sua escolha e experimente até "entender". Compreenda um padrão antes de passar para o próximo. Todo mundo entende alguns padrões melhor do que outros (e existem centenas de padrões menos conhecidos).
Apenas continue plugando.
fonte
(fonte: Amazon )
fonte
Patterns of Enterprise Application Architecture (capa dura) de Martin Fowler
Refatorando para padrões (capa dura) por Joshua Kerievsky
Integração contínua: Melhorando a qualidade do software e reduzindo riscos (brochura) por Paul Duval et.al.
Além da arquitetura de software: criando e sustentando soluções vencedoras (brochura) de Luke Hohmann
fonte
Os padrões de design são como qualquer função de biblioteca, leia sobre eles e, quando surgir um problema, o padrão de design estará em seu "Toolchest". Existem muitos livros de padrões de design, todos padronizados de acordo com os padrões de design da "Gangue dos quatro" originais.
Para qualquer programador, acho que isso e o livro Refatoração de Fowler são os requisitos mínimos absolutos.
fonte
Para sites, um site muito bom é http://ajaxpatterns.org , de um dos desenvolvedores do site ajaxian
fonte
O livro Design Patterns original é leitura obrigatória para todos os programadores.
É um livro excelente em todos os níveis: layout, clareza, percepção, profundidade. É um daqueles grandes livros que você primeiro lê de capa a capa e depois usa como referência até que você literalmente saiba de dentro para fora.
Você poderia começar pela página da Wikipedia , mas mime-se com o grande livro também.
fonte
Aplicando UML e Padrões de Craig Larman. Comece com o básico de análise, projete e use um cenário de caso simples. Apresenta a maioria dos padrões básicos de maneira simples.
fonte
Se você ler sobre padrões de projeto, notará que o Java parece ter alguns deles implementados.
Consulte o código-fonte de qualquer estrutura e você poderá obter informações sobre os padrões de projeto. Pessoalmente, não os vejo se encaixando perfeitamente em nenhum dos meus códigos, às vezes os exemplos em livros e tutoriais parecem um pouco idealizados, especialmente para o codificador solitário.
Os padrões de design não são para programadores preguiçosos.
fonte
Para mim e meus colegas estudamos Design Pattern que segue no Pattern Study Group . Eles preparam uma lista de cada padrão que devemos aprender em ordem e também têm as perguntas de abertura que fazem mais discussão em grupo.
fonte
Eu também sugiro ter um shufty em Refatoração para Padrões depois de ler Padrões de Projeto com a Cabeça Primeiro.
Observação: os exemplos de código estão em Java, mas devem ser muito semelhantes aos exemplos C # ...
fonte
Não faz muito sentido para mim que alguém com muito pouca experiência mergulhe muito profundamente nos padrões de design. É ótimo saber que eles existem, mas neste ponto você deve se concentrar mais em outras coisas, em vez de apenas aprender sobre os padrões de projeto.
Eles são úteis no contexto de um problema - como um conceito para um desenvolvedor novo / iniciante, eles não têm muito valor prático além da forma, sabendo que você deve fazer uso deles quando e onde puder.
EDIT Para esclarecer - muitos padrões de projeto são resultado de problemas encontrados em alguns domínios. Dificilmente se pode esperar que um novo programador (IMO) conheça o (s) padrão (ões) de design a ser usado para alguns conjuntos de problemas. Assim como temos um conhecimento superficial de algoritmos em estudos de CS, precisamos entender o que podemos fazer com padrões e seus benefícios, mas quando uma pessoa ainda está construindo hello world ou descobrindo stl, não há muita necessidade prática de padrões de projeto. Os padrões são ótimos. Mas eles não são a bala de prata.
(Nem era CASE (ferramentas), nem é / era UML, nem é SCRUM, nem é TDD, nem STL, nem Java, nem XML, etc.) Estes são apenas aspectos de nossa profissão e tratar esses tópicos como o segundo vir é ingênuo.
fonte
Os padrões compreendem o vocabulário de alto nível que os programadores usam para falar sobre design abstrato. Se você estiver reutilizando uma solução abstrata, é útil referir-se a ela pelo nome. Se você inventar um padrão, é profissional fazer uma pequena verificação para ter certeza de que ele ainda não recebeu um nome. Se tiver sido nomeado, a descrição pode ser útil.
Depois de codificar um pouquinho, você perceberá que está escrevendo algo semelhante ao que codificou antes. Este é um padrão. Mesmo que seja um padrão minúsculo, vale a pena notar. Existe um padrão melhor? Você vê certos padrões minúsculos cooperando juntos para resolver um problema maior? Bem, da próxima vez, quando você quiser resolver um problema maior, todo o padrão vem à sua mente como um único pedaço. Desenvolver as linhas de código detalhadas torna-se mecânico.
Quanto mais você notar os padrões, mais fácil se tornará a programação e mais você apreciará alguns dos maiores e melhores padrões desenvolvidos por outros programadores. Tente dominar o padrão MVC. De uma forma ou de outra, as variações aparecem em todos os lugares, mesmo em pequenas decisões de design.
fonte
Depois de entender o conceito, analise o código-fonte ou design do Eclipse, muitos exemplos realmente bons desses padrões (sem surpresa, Gamma foi um dos designers).
fonte
Achei os artigos do Design Pattern neste site realmente fáceis de entender
Padrões de design em C #
fonte