Lá pelos anos 70 surgiu o termo design patterns, foi um termo bastante popular nos anos 90 com o livro Gang of Four Design Patterns: Elements of Reusable Object-Oriented Software (e não, não é aquela banda pos-punk inglesa). Eu conheci os Padrões de projeto ainda quando estava na faculdade nas aulas de Java, fui apresentado ao livro Use a Cabeça! Padrões de Projetos, com o tempo utilizando os padrões em diversas linguagens percebi algumas nuances interessantes.
Quando falamos em padrão, normalmente pensamos que aquilo é uma norma a ser seguida, e isso é totalmente errado, isso acontece porque as palavras “default”, “standard” e “pattern” todas traduzem para a mesma palavra “padrão” em português, porém essas palavras têm um significado bem diferente:
Default usamos normalmente quando temos uma opção pré-selecionada que será usada caso ninguém escolha opção nenhuma.
Pattern é tipo um modelo recorrente, sabe quando tem uma praça com um gramado e todo mundo cruza fazendo um caminho, aquilo é pattern.
Standard é uma norma onde todos chegaram a conclusão que aquilo é o requerido mínimo
Outro ponto é que Padrão de projeto não é um algoritmo, apesar de ambos descreverem soluções para um problema, o algoritmo está mais para uma receita de bolo com etapas bem claras e o padrão de projeto é mais uma descrição de uma solução e que provavelmente será diferente de implementação para implementação.