Welche GOF-Entwurfsmuster sind in C # bereits als erstklassige Sprachfunktionen implementiert?


10

(Diese Frage wurde bei Stack Overflow geschlossen, weil sie "zu breit" und "keine echte Frage" ist. Vielleicht ist sie hier besser geeignet?)

Inspiriert von dieser Frage . Wir wissen, dass Ereignisse eine Implementierung des Observer-Musters auf Sprachebene sind. Gibt es andere Entwurfsmuster, die als Sprachfunktionen in C # implementiert sind? Ich möchte diese Frage C # -spezifisch halten, da viele Entwurfsmuster in anderen Sprachen implementiert sind, und ich möchte diese fokussiert halten.

Ich suche nicht nach Musterimplementierungen in der BCL (wie Dekorator in vielen WCF-Klassen oder Factory-Methode in WebClient), sondern nach Mustern auf Sprachebene .

Bisher sind mir Observer ( event) und Iterator ( foreachin Kombination mit vielen BCL-Klassen und -Schnittstellen) bekannt. Es gibt wahrscheinlich andere offensichtliche, die mir fehlen.

Antworten:


1

Delegierte sind de facto Strategiemuster


lustig, erst gestern sagte ein kollege, delegierte seien eine implementierung des befehlsmusters. Kommt darauf an, wie du es betrachtest, denke ich (afaik Befehl sollte auch die Argumente kapseln, aber im Falle einer Methode ohne Argumente ..)
stijn

1
Ich würde nicht sagen, dass Delegierte Befehlsmuster implementieren. Zumindest kann ich nicht sehen, wie Sie Dinge wie Rückgängig / Wiederherstellen nur mit Delegierten implementieren können. Sie könnten Teil eines
Befehlsobjekts sein,

0

Erweiterungsmethoden sind eine Abstraktion des Decorator-Musters.


Nicht wirklich. Mit Decorator können wir Objekte zur Laufzeit zusammensetzen, um Daten und Verhalten hinzuzufügen.
Martin Doms

1
Richtig - sie sind also bei weitem nicht so nützlich wie echte Dekorationsmuster. Wäre es besser zu sagen, dass viele der durch Erweiterungsmethoden gelösten Probleme mit Dekorationsmustern in anderen Sprachen gelöst werden?
Vstrien
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.