Który wzór jest według Ciebie najbardziej popularny?
Który wzór jest według Ciebie najbardziej popularny?
Odpowiedzi:
Jestem pewien, że najczęściej spotykaną jest „Wielka kula błota”. Niestety dla nas wszystkich.
http://en.wikipedia.org/wiki/Big_ball_of_mud
MVC i jego odmiany są zdecydowanie jednym z najlepszych wzorów.
Jeśli mówisz o wzorach Gang-of-Four , musiałbym powiedzieć Singleton . To naprawdę smutny stan rzeczy - prawie tak, jakby programiści słyszeli o magii wzorców projektowych, a potem po prostu zatrzymywali się po pierwszym.
Jeśli mówisz o wzorach w stylu architektonicznym (innymi słowy, wzorach projektowych obejmujących wiele klas lub warstw), musiałbym powiedzieć MVC . Kilka innych popularnych to wzorzec repozytorium i lokalizator usług .
Obserwator
Jeśli kiedykolwiek korzystałeś z wydarzenia. Użyłeś Observera.
Dekorator
Dodaj funkcjonalność do obiektu w czasie wykonywania poprzez kompozycję. Mój osobisty faworyt.
Edycja: Również fabryka jest prawdopodobnie jedną z najczęstszych.
Fasada
Pomyśl o dowolnym interfejsie REST, takim jak Twitter lub interfejsy API SO. Ukrywa mnóstwo zaplecza, które, przynajmniej w przypadku Twittera, może być strasznie skomplikowane.
Czy obchodzi mnie, w których tweetach db table @ apklusk są przechowywane? I że ma szybką pamięć podręczną? I że @shemnon ma tak niską czytelność, że tweety zawsze nie mają pamięci? To magia fasady.
Wzór strategii
Jeśli kiedykolwiek używałeś wstrzykiwania zależności, użyłeś wzorca strategii.
Wraz z moją poprzednią odpowiedzią dodam nową, na którą wpadłem dzisiaj z mojej bestii z odziedziczonego projektu:
Kopiuj wklej
Podczas debugowania natrafiłem na fragment kodu wywołujący 2 funkcje o podobnych nazwach:
if(x)
Func1
else
Func2
Func1 i Func2 miały te same parametry. Wyciągnąłem je i zmieniłem, a są one w 100% takie same, z wyjątkiem wywołań Func1 Func3 i Func2 wywołań Func4. Wyciągnąłem je i zmieniłem. 100% to samo, z wyjątkiem 1 linii. Tak więc poprzedni programista postanowił skopiować i wkleić dwie 50-liniowe funkcje zagnieżdżone, zamiast dodawać parametr flagi, do 2 funkcji prywatnych używanych dokładnie w jednym miejscu. To sprawia, że chcę płakać.
Mówiąc o wzorach Gang-of-Four, nie mogę wymyślić programu, który nie używa wzorca Observer. Ponadto, jak wspomniał Jaco, Singleton jest również bardzo używany, niestety stał się młotkiem (każdy programista używa go, nawet jeśli nie jest całkowicie potrzebny).
$_SESSION
zmiennej PHP .
Interpretator
Rzadko wdrażane, często używane. Selektory XPATH, XSLT, Regex, jQuery itp.
Dziwi mnie, że nikt jeszcze nie powiedział „Konstruktor”. Lub „Adapter”. Prawdopodobnie nie są tak egzotyczne, jak niektóre inne wymienione, ale używam ich przez cały czas. Fabryka i fabryka abstrakcyjna są również bardzo popularne (ale są już zajęte).
Nie sądzę, że jest wymieniony w GoF, ale ciągle używam jego odmian.
Na poziomie projektowania oprogramowania argumentowałbym, że kompozyt, strategia i szablon (oraz w mniejszym stopniu fabryka) są najczęściej używane. Przez ostatnią dekadę widzieliśmy wolę kompozycji niż dziedziczenia podczas budowania naszych systemów przy użyciu projektu OO. W rezultacie połączenie właśnie wspomnianych wzorów odgrywa znacznie ważniejszą rolę niż wszystkie inne IMO.
Architektonicznie opowiadałbym się za MVC w przedsiębiorstwie i wzorcami opartymi na automatach stanowych po osadzonej stronie rzeczy.