Aucun modèle de conception n'est nécessaire. Dans n'importe quelle langue.
J'ai tendance à rencontrer beaucoup de codes écrits par des personnes qui lisent des motifs de conception et qui pensent ensuite qu'ils devraient les utiliser partout. Le résultat est que le code réel est enterré sous des tonnes d'interfaces, de wrappers et de couches et est assez difficile à lire. C'est une mauvaise approche pour concevoir des modèles.
Les motifs de conception existent de sorte que vous disposiez d'un répertoire d'idiomes utiles lorsque vous rencontrez un problème. Mais vous ne devez jamais appliquer aucun modèle avant d’identifier le problème. Keep It Simple Stupid devrait toujours être le principe directeur supérieur.
Il est également utile de penser aux modèles de conception comme à un concept de réflexion sur le problème plutôt qu’à un code passe-partout spécifique à écrire. Et à propos de la plupart des problèmes rencontrés en tant que solution de contournement de Java, il manque des fonctions libres et des objets de fonction standard que vous utilisez dans la plupart des autres langages qui en disposent (comme Python, C #, C ++, etc.).
Je pourrais dire que j'ai un modèle de visiteur, mais dans toute langue avec des fonctions de première classe, ce sera juste une fonction prenant une fonction. Au lieu de la classe d'usine, je n'ai généralement qu'une fonction d'usine. Je dirais peut-être que j'ai une interface, mais il ne s'agit que de deux méthodes marquées avec des commentaires, car il n'y aurait pas d'autre implémentation (bien sûr, en python, une interface est toujours composée de commentaires, car elle est typée). Je parle toujours du code comme utilisant le motif, parce que c'est une façon utile de penser à cela, mais ne tapez pas tout ce qui est écrit avant d'en avoir vraiment besoin.
Alors, apprenez tous les modèles en tant que concepts . Et oubliez les implémentations spécifiques. La mise en œuvre varie et devrait varier dans le monde réel, même en Java.