Design patterns - opracowanie |
Design patterns - opracowanie |
4.02.2016, 16:30:00
Post
#1
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 20 Dołączył: 17.01.2009 Skąd: Kraków Ostrzeżenie: (0%) |
http://mcreativo.pl/
Wzorce projektowe przykłady w Php, Java. Wszystkie wzorce opisane(eng) z książki: "Design Patterns: Elements of Reusable Object-Oriented Software" (Wyjątek zamiana Singletona na DI) Generalnie każdy wzorzec krok po kroku, podobne rozwiązanie jak tutorial z Angulara, wszystkie kody działają i można pobrać z: https://bitbucket.org/mcreativo/. Dla każdego kroku osobny branch: step1, step2 itd... W przyszłości zamierzam jeszcze dodać komentarze(fb) do każdej strony bo wiadomo większy feedback lepsza jakość kodu. |
|
|
4.02.2016, 16:43:52
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Jak juz piszesz po angielsku, to trzymaj sie tego do konca
Cytat 1) Co zrobiliśmy Dla ClassA stworzyliśmy interfejs który ma implementować - addObserver oraz removeObserver dodająca i podłączająca obiekty Observer Obiekty Observer implementują jedną metodę - którą wywołuje obiekt Obserwowany 2) Jakie są zalety tego rozwiązania ? Teraz możemy dynamicznie podłączać wiele obserwatorów, łatwo możemy dodawać nowego obserwatora, nie zmieniając obiektu obserwowanego ps: czy dobrze zrozumialem ze poprostu wziales teksty z ksiazki i wstawiles je na strone? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
4.02.2016, 16:51:30
Post
#3
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 20 Dołączył: 17.01.2009 Skąd: Kraków Ostrzeżenie: (0%) |
Jak juz piszesz po angielsku, to trzymaj sie tego do konca ps: czy dobrze zrozumialem ze poprostu wziales teksty z ksiazki i wstawiles je na strone? Ad 1) Nie, wszystkie przykłady i teksty sam wymyślałem. Książkę czytałem i wziąłem po prostu z niej listę wzorców. Przykłady sa specjalnie abstrakcyjne i bardzo proste, żeby można było skoncentrować się na czym wzorzec polega i jak się zmienił kod. Ad 2) Pierwsza wersja była pisana w 2014 w "PL" i tylko php. Teraz w styczniu przetłumaczyłem całość na en i napisałem przykłady w Javie 8. Ad 3) Rozumiem, że ten tekst pl nie znalazłeś na stronie ? Być może branch "master" który nie został updatowany. Opublikowane na stronie są branche "stepX" i mam nadzieje, ze wszędzie już jest "en". @Pyton_000, dzięki za sugestie z disqus(nie znałem), jak mi się będzie chciało i będę miał czas to dorobie jaśniejszą skórkę. Ten post edytował ziolo 4.02.2016, 17:00:47 |
|
|
4.02.2016, 16:52:16
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
tylko nie FB, wrzuć disqus, lepiej się sprawdza.
Co do strony super. Merytorycznie nieźle. Tylko może zrób wersję jasną i jakąś taką przystępniejszą. Ta w prawdzie jest czytelna ale jakoś tak nie lubię ciemnych stron. Tutaj liczy się merytoryka. |
|
|
4.02.2016, 17:08:43
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Rozumiem, że ten tekst pl nie znalazłeś na stronie ? Na bitbucket. Troche to byl szok jak czytalem arta po en a potem w bitbucket kody po pl -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.02.2016, 23:11:32
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
http://mcreativo.pl/design-patterns-php/spawnm/step1
Cytat Warning: file_get_contents(/home/mcmarcin/www/mcreativo/app/..//code/design-patterns-php/spawnm/step1/_desc): failed to open stream: No such file or directory in /home/mcmarcin/www/mcreativo/src/Mcreativo/FrontBundle/Controller/CodeController.php on line 25
|
|
|
6.02.2016, 20:10:28
Post
#7
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 20 Dołączył: 17.01.2009 Skąd: Kraków Ostrzeżenie: (0%) |
thx Spawnm - w koncu to fixnalem
+ dodalem Mediatora: jakos mi umknął po drodze |
|
|
9.02.2016, 11:40:53
Post
#8
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
Zajrzałem do wzorca strategia, bo akurat ostatnio go używałem i mam uwagę:
Strategia jest dynamiczna i zależna od kontekstu, a w Twoim przykładzie w php nie ma żadnego kontekstu, jest po prosty typowe proxy:
Moim zdaniem strategia wygląda mniej więcej tak:
W moim przykładzie obiekt kontekstu dynamiczne, adekwatnie do sytuacji dobiera konkretną strategię, a jego klient nie jest tego świadomy, wie jedynie, z jakiego interface'u skorzystać. |
|
|
9.02.2016, 13:47:33
Post
#9
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 20 Dołączył: 17.01.2009 Skąd: Kraków Ostrzeżenie: (0%) |
Hmm sprawdziłem pierwsze dwa przykłady z google i "Strategia" nie polega na tym, że implementacja zależy od wewnętrznych stanów Context.
Zależy tylko od strategii którą wstrzykujemy. To prosty wzorzec projektowy. http://www.oodesign.com/strategy-pattern.html http://www.tutorialspoint.com/design_patte...egy_pattern.htm Twój przykład bardziej pasuje pod wzorzec "State" zresztą to sa bardzo podobne wzorce. A co do tego: klient nie jest tego świadomy, wie jedynie, z jakiego interface'u skorzystać. W moim przykładzie klienta jest uproszczenie, że może wydawać się, że w jednym miejscu tworzymy "Context" i używamy go od razu. Ale tak naprawdę w realnym świecie to będą najprawdopodobniej różne miejsca. I wtedy faktycznie powinno się do docelowego klienta przesłać jedynie informacje o typie(interfejs) i ten docelowy klient nie będzie wiedział jakie strategie były wstrzyknięte.
|
|
|
10.02.2016, 12:23:22
Post
#10
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
W takim razie nie zrozumiałem uproszczenia, wygląda to dla mnie jak bardzo proste proxy. Mój przykład stanem na pewno nie jest, wzorce podobne, ale w stanie implementacją steruje właśnie klient obiektu, a w strategii kontekst.
|
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 06:56 |