Wzorce projektowe jak to z nimi jest
Wzorce projektowe w programowaniu istnieją długi czas. W tym roku mija 25 lat od wydania klasycznej pozycji na ich temat. Przez ten czas były często stosowane. Czasem poprawnie, czasem nie do końca dobrze a w niektórych przypadkach mogły być nadużywane. Od początku budziły kontrowersje. Były traktowane jako obejścia dla braków funkcjonalności w c++. W niektórych językach można niektóre wzorce zaimplementować lepiej, prościej lub całkowicie z nich zrezygnować.
Wzorce projektowe kiedyś i dziś
Odnoszę wrażenie, że dawniej wzorce projektowe były częściej stosowane niż obecnie. Po pierwsze aplikacje były dużymi monolitami i pewne patterny się powtarzały. Ponadto dziś duży nacisk kładziemy na czytelność i jakość kodu. Niestety każdy wzorzec projektowy wprowadza do systemu pewną złożoność. Ale czy to znaczy, że nie należy korzystać ze wzorców projektowych?
Ewolucja
Skoro java wprowadza nowe mechanizmy i wciąż się rozwija, to czy wzorce projektowe nie powinny ewaluować? Jeśli podobne taski implementuje się inaczej, to również wzorce można zapisać inaczej niż w klasycznych diagramach. Java, biblioteki i frameworki same korzystają z wzorców i pozwalają łatwo je wykorzystać. Przecież enum jest singletonem. Aby stworzyć buildera używam lomboka. Zamiast używać Null Object mogę zastosować optionala. Czy spring-data nie jest adapterem dla operacji bazodanowych a kontrolery restowe to nie fasada dla naszej aplikacji? Nawet programowanie reaktywne opiera się na obserwatorze.
Stosować czy pisać
Patrząc na powyższe przykłady wzorce projektowe są wciąż często używane ale niekoniecznie sami je piszemy. Moim zdaniem warto je znać. Zamiast coś opisywać wieloma słowami, możesz użyć nazwy wzorca. Również, dzięki ich znajomości może być Ci łatwiej zrozumieć jak działają niektóre biblioteki i elementy języka. Ponadto w kodzie możesz wyłapać pewne fragmenty, które później możesz zrefaktoryzować do wzorców. Bo przecież z wzorcami projektowymi jest jak z lego, masz jeden to wiele nie zrobisz. Ale gdy masz już ich wiele wtedy możesz je łączyć i wykorzystywać razem.
Istotne spostrzeżenie. Ostatnio miałem podobne, ale podszedłem do tego od strony takiej że po prostu moda na wzorce trochę minęła. Ale faktycznie tyczy się to tego że języki są dojrzalsze.
Czy była na nie moda, trudno mi powiedzieć. Miałem szczęście pracować w takich teamach, gdzie wzorce projektowe były mądrze używane. Ale z drugiej strony też znam osoby, które wzorców nie używały i też dobrze sobie radziły. Wzorce tak jak i każde narzędzie trzeba używać odpowiednio do potrzeb.
Dziękuję za artykuł! Jest nowy polski katalog wzorców projektowych: https://refactoring.guru/pl/design-patterns