Ich würde absolut davon abraten, Programmieren zu unterrichten, indem ich Entwurfsmuster unterrichte. Sie können sie nicht gut anwenden, ohne die dahinter stehenden Prinzipien zu verstehen. Deshalb ist es viel wichtiger, diese Prinzipien zu lehren.
Ich neige dazu zu denken, dass Designmuster für arbeitende Programmierer sowieso nicht wirklich so wertvoll sind. Wenn Sie die Prinzipien eines bestimmten Entwurfsmusters vollständig verstehen, neigen Sie in einer Situation, in der es eine gute Lösung ist, natürlich dazu, es (oder etwas Ähnliches) zu konstruieren, auch wenn Sie es nicht wussten dass es ein Muster mit einem Namen war. Unabhängig davon, wie viel Zeit Sie mit dem Lernen von Mustern verbringen, sollten Sie besser lernen, wie Sie über Code im Allgemeinen denken. Wenn Ihre Fähigkeiten zum Lösen von Problemen im Allgemeinen nicht auf dem neuesten Stand sind, können Sie keinen guten Code schreiben, egal wie gut Sie einige Muster anwenden können. Und wenn Ihre Fähigkeiten zum "Lösen von Problemen im Allgemeinen" gut sind, können Sie Probleme auch dann lösen, wenn Sie kein einziges Muster kennen.
Ich denke auch , dass es in einer idealen Welt würde nicht sein , alles Design - Muster, weil Ideen häufig genug ein Muster all gut implementiertes in Bibliotheken würde aufgerufen werden und wir würden tatsächlich werden die Wiederverwendung Code statt ständig Umschreiben es. Stellen Sie sich vor, es gäbe ein "Entwurfsmuster für reguläre Ausdrücke", bei dem Sie jedes Mal, wenn Sie es verwenden möchten, eine kleine Regex-Engine implementieren müssten. Entwurfsmuster sind nur Bibliotheken, die nicht geschrieben werden können, da die Sprache nicht die richtigen Abstraktionsmöglichkeiten bietet.
Das ist eigentlich ein weiterer Grund, sich nicht sonderlich für sie zu interessieren. Sie sind nicht annähernd so universell, wie es manchmal behauptet wird, sondern sind in der Tat sehr stark an die besonderen Arten der Programmstrukturierung gebunden, die eine bestimmte Sprache zulässt / fördert. Ein Design Pattern-Buch, das für Python geschrieben wurde, ist völlig anders als ein Buch für Java und sogar noch anders als ein Buch für eine nicht-imperative Sprache wie Haskell. Besser zu verstehen auf einer tieferen Ebene, und Sie werden in der Lage sein, Designmuster selbst in jeder Sprache zu entdecken, mit der Sie vertraut sind.