Je pense que trois facteurs entrent en jeu ici.
Manque de masse critique
Premièrement, un motif est en gros un peu plus que de donner un nom à un code qui implémente un "bloc" de fonctionnalités particulier. La seule façon dont ce nom offre une réelle valeur réelle est que si vous pouvez compter sur le fait que tout le monde sait ce que le nom signifie, alors simplement en utilisant le nom, ils comprennent immédiatement beaucoup de choses sur le code.
Les modèles n’ont jamais établi la masse critique dont ils avaient besoin pour y parvenir. Plutôt le contraire, AAMOF. Au cours des quelque 20 années qui se sont écoulées depuis la publication du livre du GoF, je suis presque certain de n'avoir jamais assisté à une douzaine de conversations au cours desquelles toutes les personnes impliquées connaissaient réellement suffisamment de motifs pour leur permettre d'améliorer la communication.
Pour le dire légèrement plus étrangement: les modèles de conception ont échoué spécifiquement parce qu'ils ont échoué.
Trop de motifs
Je pense que le deuxième facteur majeur est qu’ils ont au départ nommé trop de motifs. Dans un bon nombre de cas, les différences entre les modèles sont suffisamment subtiles pour qu'il soit presque impossible de dire avec une certitude réelle si une classe particulière correspond à un modèle (ou peut-être les deux - ou peut-être aucune).
L'intention était que vous puissiez parler du code à un niveau supérieur. Vous seriez en mesure d’étiqueter un gros morceau de code comme l’implémentation d’un modèle particulier. En utilisant simplement ce nom prédéfini, chaque personne à l'écoute en sait généralement autant qu'elle se soucie de ce code, afin que vous puissiez passer à autre chose.
La réalité tend à être presque le contraire. Disons que vous êtes en réunion et dites-leur que cette classe est une façade. La moitié des participants à la réunion n’ont jamais su ou ont oublié depuis longtemps ce que cela signifie. L'un d'eux vous demande de lui rappeler la ou les différences exactes entre une façade et, par exemple, un proxy. Oh, et les quelques personnes qui connaissent vraiment les habitudes passent le reste de la réunion à débattre de la question de savoir si cela devrait vraiment être considéré comme une façade ou "juste" comme un adaptateur (ce type insistant toujours sur le fait que cela ressemble à une procuration).
Étant donné que votre intention était vraiment juste de dire: "ce code n'est pas très intéressant, passons à autre chose", essayer d'utiliser le nom d'un motif ne faisant qu'ajouter à la distraction, pas à la valeur.
Manque d'intérêt
La plupart des modèles de conception ne traitent pas vraiment des parties de code intéressantes. Ils traitent de choses telles que: "comment créer ces objets?" Et "comment faire en sorte que cet objet parle à celui-ci?" La mémorisation de noms de motifs pour ceux-ci (ainsi que les arguments susmentionnés portant sur les détails et autres) met simplement beaucoup d'énergie dans des tâches que la plupart des programmeurs ne se soucient tout simplement pas trop de faire.
Pour le dire légèrement différemment: les modèles traitent des choses qui sont identiques entre beaucoup de programmes - mais ce qui rend vraiment un programme intéressant, c'est sa différence par rapport aux autres programmes.
Sommaire
Les modèles de conception ont échoué parce que:
- Ils n'ont pas réussi à atteindre une masse critique.
- La différenciation entre les motifs était insuffisante pour garantir la clarté.
- La plupart du temps, ils traitaient des parties du code dont presque personne ne se souciait vraiment.