Acredito que a turma de quatro classifique os padrões de design como
uma solução comum para um problema comum *
Então, sim, os padrões são relevantes quando o mesmo tipo de problema ocorre. E isso nos leva a um problema com o termo "Design Pattern". Um padrão é algo reconhecível que ocorre repetidamente. Então, na realidade, não existe um padrão de design, existe um padrão de problemas.
Algumas linguagens de programação podem ter soluções nativas para alguns desses problemas. O próprio livro "Design Patterns" menciona que o padrão de visitante é de pouco valor se você estiver usando o CLOS, pois o multi-despacho é suportado nativamente pelo CLOS, o mesmo problema que o padrão de Visitante está tentando resolver.
Além disso, a estrutura .NET possui um mecanismo de construção no evento para publicar eventos para vários ouvintes, tornando o padrão Observador menos relevante nesse contexto.
A mudança de aplicativos de desktop para aplicativos da web ** também altera o tipo de problemas de programação que precisamos resolver. Muitos dos padrões do livro "Design Patterns" são relevantes para aplicativos de desktop, mas não tanto para aplicativos da web. Obviamente, com aplicativos de página única, esses padrões podem ser relevantes novamente no lado do cliente.
Mas os padrões de design e livros como "Design Patterns" ou "Patterns of Enterprise Application Architecture" são de grande valor quando você é um programador iniciante e se depara com um novo tipo de problema pela primeira vez; como fui a primeira vez que me pediram para implementar a funcionalidade Desfazer. Se não fosse o livro "Design Patterns", minha implementação provavelmente seria algo como armazenar um instantâneo dos dados após cada operação de mudança de estado *** - uma abordagem muito propensa a erros e terrivelmente ineficiente.
Portanto, sim, alguns dos padrões se tornam menos relevantes ao longo do tempo e, à medida que você se torna um programador experiente, pensa menos sobre eles. Mas para um iniciante, eles são valiosos, desde que você se lembre de que eles são os meios para resolver um problema - e não uma busca para usar o maior número possível.
* a cotação pode não ser 100% precisa, pois é retirada da memória
** na minha experiência, está ficando muito comum as empresas escolherem mecanismos de entrega na Web para aplicativos de linha de negócios internos.
*** Depois de aprender a programação funcional e estruturas funcionais de dados, essa pode ser a maneira que eu resolveria hoje.