Jestem zagubionym początkującym i hobbystą programistą, który próbuje to opanować, więc wybacz mi, jeśli moje pytanie jest trochę nierealne lub nie ma zbyt wiele sensu.
Widzę wiele pytań dotyczących SO związanych z wykorzystaniem wzorców projektowych i zastanawiam się, czy ktoś ma dobre zasoby do nauki i wdrażania wzorców projektowych? Rozumiem ogólną ideę i wiem, jak / kiedy użyć kilku z nich (Singletony, metody fabryczne), ale wiem, że mi ich brakuje.
(Na wszelki wypadek preferuję język C #, ale mogłem się uczyć na przykładach w innych językach)
źródło
Wzorce projektowe są świetne z różnych powodów:
Ale kiedy Twoim celem jest po prostu nauczenie się wzorców projektowych, myślę, że brakuje Ci podstaw. Wszystkie wzorce projektowe są oparte na bardziej powszechnych zasadach. Wysoka spójność, zasada niskiego sprzężenia otwarta, zamknięta, SUCHY, zasada podstawienia Liskova itp. Aby zapoznać się z tymi podstawami, przeczytałbym następujące książki w tej kolejności:
Następnie jesteś gotowy na podstawowy zestaw czterech wzorców projektowych
Następny krok:
I zawsze pamiętaj: wzór nie jest celem!
źródło
Dodam, że książka Design Patterns z „Gang of Four” to biblia dla każdego, kto poważnie interesuje się wzorcami projektowymi.
źródło
Moja wskazówka:
Przeczytaj dużo o wzorach z różnych źródeł.
Próba wymuszenia jak największej liczby wzorców w całym kodzie, który piszesz, nie przyniesie dobrych rezultatów. Zamiast tego pozwól, aby informacja spoczęła w twoim mózgu przez chwilę (czytaj: miesiące).
Nagle natkniesz się na problem lub fragment kodu i niejasno będziesz pamiętać, że widziałeś coś, co może działać jako rozwiązanie tego konkretnego problemu. Nadszedł czas, aby przyjrzeć się szczegółom wzoru, o którym myślisz, i spróbować go zastosować.
W każdym razie to mi się udało.
źródło
Wzorce projektowe
Ta witryna samouczka zawiera następujące podsekcje
Ta strona zawiera również przewodnik po anty-wzorcach , UML i refaktoryzacji .
źródło
Bruce Eckel ma książkę o wzorcach projektowych , chociaż jest to Java, tak jak wszystkie jego książki są niesamowite. A najlepsze jest to, że są darmowe!
źródło
Wzorce projektowe języka C # 3.0 dla perspektywy języka C # w zakresie wzorców projektowych.
(źródło: oreilly.com )
źródło
Książka wprowadzająca, która okazała się przydatna i dobrze napisana, to Design Patterns Explained autorstwa Alana Shallowaya i Jamesa Trotta (Addison Wesley).
Czy nie zacząć od Gangi Cztery książki, bo to nie jest książka wprowadzająca w dowolny sposób.
źródło
Poleciłbym przyjrzeć się kwintologii Jean Paula Boodhoo (?) W Demystifying Design Patterns w DNRtv, adresy URL podane poniżej. Teledyski dotyczą między innymi Singletona, Abstract Factory - z tą różnicą, że można oglądać, jak programuje, gdy omawia teorię. Dobrze jest obejrzeć lunch w deszczowy dzień powszedni.
http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum= 68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92
źródło
Adnotacja do powyższych komentarzy.
Skrócona instrukcja dotycząca wzorców GOF
Tutaj jest dobre miejsce, w którym możesz zacząć dofactory.com/patterns/patterns.aspx - Możesz znaleźć link do każdego wzorca wraz z odpowiadającymi mu implementacjami.
Pamiętaj jednak, że są to wzorce GOF. Być może będziesz musiał przeczytać i zrozumieć zaawansowane wzorce, gdy zdobędziesz wystarczającą wiedzę w zakresie OOAD. Head First Design Patterns to dobry początek, a po dokonaniu pewnych postępów przejdź do wzorców architektury aplikacji korporacyjnych Martina Fowlera.
Stosowanie wzorców projektowych - proces myślowy
Kolejny główny aspekt - stosowanie wzorców projektowych jest równie ważne, jak sama ich znajomość. Przeczytanie tych artykułów również może Ci pomóc.
Stosowanie wzorców projektowych Część I
Stosowanie wzorców projektowych Część II
Mam nadzieję że to pomoże
źródło
Head First Design Patterns jest dobry, jak już wspomniano. Poza tym oczywiście oryginalna książka i wzorce projektowe C #. Są też wspomniane dobre strony internetowe.
Oprócz samokształcenia, poważnie polecam rozpoczęcie lub uczęszczanie na grupę studiującą wzorce w Twojej okolicy. Zobacz Przewodnik do nauki projektowania wzorców, aby uzyskać wyjaśnienie i świetną kolejność studiowania wzorców. Zrobiliśmy to i mogę szczerze powiedzieć, że nie zrozumiałbym tak dużo, jak teraz. Cotygodniowe spotkania z innymi zainteresowanymi ludźmi sprawiają, że jesteś zaskakująco zdyscyplinowany podczas uczenia się czegoś abstrakcyjnego, takiego jak wzorce projektowe.
Udanych studiów!
źródło
Przed wydaniem pieniędzy na książki poleciłbym stronę ze wzorami projektowymi na Wikipedii . A także coś innego w Google na temat „screencastów wzorców projektowych” lub wyszukiwania „wzorców projektowych” w YouTube . Uzyskanie tych samych informacji w różny sposób często pomaga w obniżeniu ceny.
Książka Gang of Four to ostateczny tekst na temat najbardziej znanych wzorców, ale nie jest tak łatwy do odczytania, a przykłady w C ++ nie są lubiane przez wszystkich.
Tekst Head First Design Patterns jest znacznie bardziej przystępny, ale zawiera tylko podzbiór wzorców Gang of Four.
Najważniejsze jest, aby zrozumieć, gdzie i dlaczego dany wzór jest przydatny. Następnie przeszukaj internet w poszukiwaniu przykładów implementacji w wybranym przez siebie języku i eksperymentuj, aż „zrozumiesz”. Zrozum jeden wzór, zanim przejdziesz do następnego. Każdy rozumie niektóre wzorce lepiej niż inne (a są setki mniej znanych).
Po prostu odłączaj.
źródło
(źródło: Amazon )
źródło
Patterns of Enterprise Application Architecture (twarda okładka) autorstwa Martina Fowlera
Refaktoryzacja do wzorców (twarda okładka) autorstwa Joshua Kerievsky
Continuous Integration: Improving Software and Reducing Risk (Paperback) Paul Duval i in.
Beyond Software Architecture: Creating and Sustaining Winning Solutions (Paperback), autor: Luke Hohmann
źródło
Wzorce projektowe są jak każda funkcja biblioteczna, przeczytaj o nich, a gdy pojawi się problem, wzorzec projektowy będzie w twojej "Bibliotece narzędzi". Istnieje wiele książek ze wzorami projektowymi, wszystkie wzorowane na oryginalnych wzorach „Gang of four”.
Myślę, że dla każdego programisty oraz książka Refactoring autorstwa Fowlera to absolutnie minimalne wymagania.
źródło
W przypadku witryn internetowych bardzo dobrą witryną jest http://ajaxpatterns.org , jednego z twórców strony internetowej Ajaxian
źródło
Oryginalna książka Wzorce projektowe to lektura obowiązkowa dla wszystkich programistów.
To doskonała książka na każdym poziomie: układ, przejrzystość, wgląd, głębia. To jedna z tych wspaniałych książek, które najpierw czytasz od deski do deski, a potem używasz jako odniesienia, dopóki nie zorientujesz się tego dosłownie na wylot.
Możesz zacząć od strony Wikipedii , ale zafunduj sobie również świetną książkę.
źródło
Stosowanie UML i wzorców autorstwa Craiga Larmana. Zacznij od podstaw analizy, projektowania i stosowania prostego scenariusza przypadku. W prosty sposób przedstawia większość podstawowych wzorów.
źródło
Jeśli czytasz o wzorcach projektowych, zauważysz, że Java wydaje się mieć kilka z nich zaimplementowanych.
Spójrz na źródło dowolnej platformy, aby uzyskać informacje o wzorcach projektowych. Osobiście nie uważam, aby pasowały idealnie do żadnego z moich kodów, czasami przykłady w książkach i tutorialach wydają się trochę wyidealizowane, szczególnie dla samotnego programisty.
Wzorce projektowe nie są dla leniwych programistów.
źródło
Ja i moi koledzy studiuję wzorzec projektowy, który podąża za wzorcem Study Group . Przygotowują listę wszystkich wzorców, których powinniśmy się nauczyć w kolejności, a także mają pytania otwierające, które powodują więcej dyskusji w grupie.
źródło
Sugeruję również, aby po przeczytaniu Head First Design Patterns rzucić okiem na Refactoring to Patterns.
Uwaga: przykłady kodu są w Javie, ale powinny być bardzo podobne do przykładów w C # ...
źródło
Nie ma dla mnie zbytniego sensu, aby ktoś z bardzo małym doświadczeniem zagłębiał się w wzorce projektowe. Dobrze jest wiedzieć, że istnieją, ale w tym momencie powinieneś skupić się bardziej na innych rzeczach niż tylko na uczeniu się o wzorcach projektowych.
Są przydatne w kontekście problemu - jako koncepcja dla nowego / początkującego dewelopera nie mają tak naprawdę zbyt dużej wartości praktycznej poza wiedzą, że należy z nich korzystać, kiedy i gdzie można.
EDYCJA Dla wyjaśnienia - wiele wzorców projektowych jest wynikiem problemów występujących w niektórych dziedzinach. Trudno oczekiwać, że nowy programista (IMO) będzie znał wzorce projektowe, które będą używane w przypadku niektórych problemów. Tak jak otrzymujemy odrobinę algorytmów w badaniach CS, potrzebujemy zrozumienia rzeczy, które możemy zrobić z wzorami i ich korzyści, ale kiedy osoba nadal buduje świat hello lub odkrywa stl, nie ma praktycznej potrzeby tworzenia wzorców projektowych. Wzory są świetne. Ale to nie jest srebrna kula.
(Ani też CASE (narzędzia), ani nie jest / nie było UML, ani SCRUM, ani TDD, ani STL, ani Java, ani XML itp.) To tylko aspekty naszej profesji i traktowanie tych tematów jako drugiego przyjście jest naiwne.
źródło
Wzorce obejmują słownictwo wysokiego poziomu używane przez programistów do mówienia o abstrakcyjnym projekcie. Jeśli ponownie używasz abstrakcyjnego rozwiązania, warto odwołać się do niego po nazwie. Jeśli wymyślisz wzór, profesjonalistą jest zrobić małe sprawdzenie, aby upewnić się, że nie ma już nazwy. Jeśli został nazwany, to opis może być przydatny.
Po skodowaniu choćby odrobiny zauważysz, że piszesz coś podobnego do tego, co wcześniej zakodowałeś. To jest wzór. Nawet jeśli jest to drobny wzór, warto to zauważyć. Czy jest lepszy wzór? Czy widzisz pewne drobne wzorki współpracujące ze sobą, aby rozwiązać większy problem? Cóż, następnym razem, gdy będziesz chciał rozwiązać większy problem, cały wzór przyjdzie Ci do głowy jako pojedynczy fragment. Dopracowywanie szczegółowych linii kodu staje się mechaniczne.
Im bardziej zauważasz wzorce, tym łatwiejsze staje się programowanie i tym bardziej docenisz niektóre z największych i najlepszych wzorców opracowanych przez innych programistów. Spróbuj opanować wzorzec MVC. Tak czy inaczej, różnice pojawiają się wszędzie, nawet w przypadku drobnych decyzji projektowych.
źródło
Gdy zrozumiesz koncepcję, przejrzyj kod źródłowy lub projekt Eclipse, wiele naprawdę dobrych przykładów tych wzorców (nic dziwnego, Gamma był jednym z projektantów).
źródło
Uważam, że artykuły Wzorców projektowych na tej stronie są naprawdę łatwe do zrozumienia
Wzorce projektowe w C #
źródło