Durante o desenvolvimento de um software é normal encontrarmos desafios. Conforme crescemos em nossa carreira como desenvolvedor, adquirimos mais experiência e conhecimento e então percebemos que muitos problemas são recorrentes mesmo em projetos diferentes e para clientes e ou empresas diferentes. Quando nos deparamos com tais situações, automaticamente nos lembramos de como solucionamos tal problema já resolvido anteriormente. De certa forma é como se houvesse um padrão para resolver um tipo de problema. Estes padrões são chamados de padrões de projetos, também conhecidos pelo termo original em inglês Design Patterns, que descrevem soluções para problemas.
O conceito de padrão de projeto surgiu na construção civil e foi elaborada na década de 70 pelo arquiteto Christopher Alexander, que escreveu o primeiro catálogo de padrões que se tem conhecimento. E posteriormente foi adotado pela Engenharia de Software em que se tornou popular no mundo do desenvolvimento de software.
Quando utilizamos de forma correta, conseguimos garantir o desenvolvimento de softwares flexíveis, reutilizáveis e de fácil manutenção. Neste contexto, a principal vantagem do uso está no reuso das soluções propostas para determinado obstáculo, permitindo que até mesmo profissionais menos experientes possam atuar como especialistas. Estes padrões, na maioria das vezes, são provenientes de profissionais experientes e que conseguiram aplicar e validar tais soluções em projetos reais.
Conhecer Design Patterns, é algo de extrema importância no desenvolvimento de qualquer software. Significa que modelos já foram utilizados e testados, o que representa o aumento da produtividade por parte do desenvolvedor, nos ajudando a desenvolver de forma mais rápida frente a desafios semelhantes.
Para concluir é valido ressaltar que mais do que saber implementar um padrão, é importante entender como e qual problema é resolvido com um determinado padrão.