Jakie wzorce projektowe GOF są już zaimplementowane jako pierwszorzędne funkcje językowe w języku C #?

10

(To pytanie zostało zamknięte w przypadku przepełnienia stosu, ponieważ jest „zbyt szerokie” i „nie jest prawdziwym pytaniem”, więc może jest bardziej odpowiednie tutaj?)

Zainspirowany tym pytaniem . Wiemy, że wydarzenia są implementacją wzorca Observer na poziomie językowym. Czy istnieją inne wzorce projektowe zaimplementowane jako funkcje językowe w języku C #? Chcę zachować to pytanie specyficzne dla języka C #, ponieważ istnieje wiele wzorców projektowych zaimplementowanych w innych językach, i chcę skupić się na tym.

Nie szukam implementacji wzorców w BCL (takich jak dekorator w wielu klasach WCF lub metoda fabryczna w WebClient), ale wzorce na poziomie języka .

Jak dotąd znam observer ( event) i iterator ( foreachw połączeniu z wieloma klasami i interfejsami BCL). Prawdopodobnie są inne oczywiste, za którymi tęsknię.

Martin Doms
źródło

Odpowiedzi:

1

Delegaci są de facto wzorcami strategii

Homde
źródło
zabawne, zaledwie wczoraj kolega powiedział, że delegaci są implementacją wzorca poleceń. Zależy od tego, jak na to patrzysz (polecenie afaik powinno również zawierać argumenty, ale w przypadku metody bez argumentów ..)
stijn
1
Nie powiedziałbym, że delegaci są implementacją wzorców poleceń, przynajmniej nie widzę, jak można zaimplementować takie rzeczy jak cofanie / ponawianie przy użyciu tylko delegatów. Mogą być częścią obiektu dowodzenia, ale to inna sprawa
Homde
0

Metody przedłużania są abstrakcją wzoru dekoratora.

vstrien
źródło
Nie całkiem. Decorator pozwala nam komponować obiekty w czasie wykonywania w celu dodawania danych i zachowania.
Martin Doms,
1
To prawda - więc nie są tak przydatne, jak prawdziwe wzory dekoratorów. Czy lepiej byłoby powiedzieć, że wiele problemów rozwiązanych metodami rozszerzenia rozwiązuje się za pomocą wzorów dekoratorów w innych językach?
vstrien