Z jakimi problemami mogę się spotkać, jeśli nie będę używać wzorców projektowych? Czy możesz mi powiedzieć o problemach z podejściem do projektu przy użyciu standardowych technik obiektowych?
design-patterns
ja, uczeń
źródło
źródło
Odpowiedzi:
Nie rozumiesz sedna sprawy.
Wzory projektowe z natury istnieją podczas projektowania oprogramowania, podobnie jak wzorce konstrukcyjne istnieją na świecie. Nawet jeśli nie znasz nazwy rzeczy, w końcu okaże się, że pewne struktury fizyczne są dobrze dostosowane do pewnych problemów. Przekonasz się, że trójkątny drewniany / metalowy pręt itp. Jest bardzo stabilną konstrukcją, ale tylko w płaszczyźnie. Przekonasz się, że kwadratowe klocki mają pewne zalety w stosunku do okrągłych ...
Podobnie niektóre struktury oprogramowania są w pewien sposób unikalne lub optymalne. W końcu je znajdziesz i będziesz używać ich bez względu na to, czy znasz ich nazwy . To jest sedno wzorców projektowych - to nazwy tych struktur, które doświadczeni programiści znają i używają. Daje to programistom możliwość komunikowania się o wiele bardziej jednolicie i zwięźle. Pozwala także programistom na bardziej świadome myślenie o wzorcach.
Więc dwa kluczowe punkty, które staram się przedstawić:
źródło
Ci, którzy nie pamiętają przeszłości, skazani są na jej powtórzenie.
Nie napotkasz żadnych specyficznych problemów poza tymi, które wywołuje Twój projekt. Z czasem skończysz z wzorami, nie będąc świadomym, po prostu spędziłeś czas na ich samodzielnym opracowaniu. Znajomość wzorów ułatwia ich zauważenie w projekcie i ma tę główną zaletę, że zostały udowodnione przez wiele osób.
Wszystko, co jest obecnie rozwijane, opiera się w dużej mierze na wcześniejszej wiedzy, nie ma sensu go ignorować. Wyobraź sobie budowę dzisiejszego wieżowca, nie znając problemów, z jakimi borykają się ludzie, którzy budowali katedry kilkaset lat temu.
źródło
Będziesz miał problem z niemożnością napisania oprogramowania.
Zmienne są wzorcem projektowym.
Metody są wzorcem projektowym.
Operatory - dodawanie, odejmowanie itp. - są wzorcem projektowym.
Instrukcje są wzorcem projektowym.
Wartości są wzorcem projektowym.
Referencje są wzorcem projektowym.
Wyrażenia są wzorcem projektowym.
Klasy są wzorcem projektowym.
...
Wszystko, co robisz w programowaniu przez cały czas, jest wzorem . Przez większość czasu wzór jest tak zakorzeniony w twoim myśleniu, że przestałeś myśleć o nim jako o „wzorcu projektowym”. Rzeczy, których musisz się nauczyć, takie jak „wzór singletonu” i tak dalej, to po prostu wzory, które nie zostały (jeszcze) upieczone w jakimkolwiek języku, którego używasz.
Nie. Nie mam pojęcia, co to pytanie oznacza. Wzorce projektowe są „standardowymi technikami obiektowymi” - dlatego tworzą wzorce projektowe . Wzorzec projektowy jest standardową techniką rozwiązywania określonego problemu, szczególnie (choć niekoniecznie ) w języku obiektowym.
źródło
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- Taka jest (prawie) definicja wzorca projektowego - elastyczna / łatwa do ponownego użycia konstrukcja kodu używana do przezwyciężenia ograniczenia w samym języku, który jest łatwy do przekazania innym. Gdy jest częścią języka, nie jest już wzorem.Zrozumienie punktu wzorca projektowego jest ważniejsze niż użycie go do litery. Niektóre wzorce są, IMO, głupie, przynajmniej w paradygmatach językowych, do których jestem przyzwyczajony. IMO, programista, który po prostu ślepo używa wzorców projektowych i nie rozumiejąc ich, jest gorszym programistą niż ten, który sam chciałby przemyśleć różne rzeczy. Ale ktoś, kto zapozna się z pomysłami, a następnie sam zdecyduje, czy warto, może być znacznie silniejszym programistą niż którykolwiek z nich.
To powiedziawszy, nie mam pojęcia! Jaki jest sens wagi muchowej i nie wstydzę się tego przyznać. (zobacz komentarze do innego wpisu na Wikipedii, który bardzo pomógł)
Polecam wpis wikipedii o wzorach projektowych. Jest bardzo zwięźle i wyraźnie napisane. Bardzo pomocny w zrozumieniu, dlaczego można zawracać sobie głowę danym wzorcem projektowym, czy nie. Osobiście uważam, że najprostsze są najbardziej przydatne i nie zastanawiałbym się dwa razy nad modyfikacją danej implementacji dowolnego wzorca, aby pasował do moich potrzeb.
To są pomysły, a nie plany. W niektórych językach nie są to wcale dobre pomysły. W innych są słusznie postrzegane jako kłótnie w przezwyciężaniu słabości projektowych języka, które można lepiej zrekompensować mniejszą złożonością. Niezależnie od tego nie zaszkodzi zbadać je i spróbować zrozumieć wyzwania, które mają pokonać, zanim zdecydujesz się na własne preferowane rozwiązania.
Jakie problemy napotkasz? Możesz stracić okazję i poświęcić więcej czasu na problemy, niż potrzebujesz, chyba że jesteś geniuszem programistycznym, który już wszystko zrozumiał. Ważne jest, aby zachować krytyczne spojrzenie na popularne pomysły programistyczne, ale nigdy nie boli rozumieć, co ludzie myślą, że rozwiązują, ponieważ zapewni to większą przejrzystość preferowanym rozwiązaniom / podejściom.
źródło
Główny problem, z którym się spotkasz, polega na tym, że wymyślisz koło na nowo . Nazywa się je wzorami, ponieważ pojawiają się często i w przewidywalny sposób.
źródło
Nawet jeśli podążasz za wzorami projektowymi, możesz mieć zły projekt. Wzory projektowe są naturalne i wykorzystasz je w swoim projekcie. Będziesz musiał bardzo się postarać, aby nie użyć żadnego z wzorów. Nie ma powodu, aby potępiać wzorce projektowe, ważniejsze jest wybranie odpowiednich wzorów dla swoich potrzeb
źródło
Cały czas używasz wzorów, nie zdając sobie z tego sprawy. Wiele standardowych bibliotek w popularnych językach zostało zaprojektowanych z uwzględnieniem wzorców projektowych. Przykładem jest
FileReader
biblioteka Java, która została zaprojektowana przy użyciu wzorca projektowego dekoratora . Mówiąc teraz o swoim własnym kodzie, nie musisz używać wzorców projektowych (w większości przypadków). Wzorzec projektowy jest „rozwiązaniem wielokrotnego użytku dla często występującego problemu” , co oznacza, że pomoże ci napisać czystszy, łatwiejszy w utrzymaniu kod, więc tak naprawdę to od ciebie zależy, ile chcesz skończyć z kodem spaghetti.źródło