Je crois que la bande des quatre classe elle-même les modèles de conception
une solution commune à un problème commun *
Alors oui, les modèles sont pertinents lorsque le même type de problème se produit. Et cela nous amène à un problème avec le terme "Design Pattern". Un motif est quelque chose de reconnaissable qui se répète. Donc, en réalité, il n'y a pas de modèle de conception, il y a un modèle de problème.
Certains langages de programmation peuvent avoir des solutions natives à certains de ces problèmes. Le livre "Design Patterns" indique lui-même que le motif visiteur a peu d’importance si vous utilisez CLOS, car la multi-répartition est supportée de manière native par CLOS, le problème même que le motif Visiteur tente de résoudre.
En outre, le framework .NET a un mécanisme d’événement intégré pour la publication des événements vers plusieurs écouteurs, ce qui rend le modèle Observer moins pertinent dans ce contexte.
Le passage des applications de bureau aux applications Web ** modifie également le type de problèmes de programmation que nous devons résoudre. La plupart des modèles du livre "Design Patterns" sont pertinents pour les applications de bureau, mais pas tellement pour les applications Web. Bien entendu, avec les applications à page unique, ces modèles peuvent être à nouveau pertinents du côté client.
Mais les modèles de conception, et des livres tels que «Modèles de conception» ou «Modèles d’architecture d’applications d’entreprise» ont une grande valeur lorsque vous êtes programmeur débutant et que vous faites face à un nouveau type de problème pour la première fois; comme j'étais la première fois, on m'a demandé d'implémenter la fonctionnalité d'annulation. N'eût été le livre "Design Patterns", mon implémentation aurait probablement été quelque chose comme stocker une capture instantanée des données après chaque opération de changement d'état *** - une approche très sujette aux erreurs et horriblement inefficace.
Donc, effectivement, certains modèles deviennent moins pertinents au fil du temps et, à mesure que vous devenez un programmeur expérimenté, vous y réfléchissez moins. Mais pour un novice, ils sont précieux, pour autant que vous vous rappeliez qu’ils sont le moyen de résoudre un problème - et non une quête pour en utiliser le plus possible.
* devis peut ne pas être précis à 100% car il est pris de la mémoire
** D'après mon expérience, il est devenu très courant pour les entreprises de choisir des mécanismes de diffusion Web pour les applications métier internes.
*** après avoir appris la programmation fonctionnelle et les structures de données fonctionnelles, ce serait peut-être la façon dont je le résoudrais aujourd'hui.