Design patterns - Strategy, Observer and Factory

  Рет қаралды 21,772

Przeprogramowani

Przeprogramowani

Күн бұрын

Learn how to use three very important design patterns that can easily enhance most of your projects - Strategy, Observer and Factory.

Пікірлер: 60
@Przeprogramowani
@Przeprogramowani 4 жыл бұрын
Zapisz się do drugiej edycji naszego kursu Opanuj JavaScript! 💪 przeprogramowani.pl/kurs-javascript/
@erwin_adv
@erwin_adv 5 жыл бұрын
w końcu patterny, tak często jest to pomijane w wielu materiałach. Więcej o patternach! :D
@PeBesik
@PeBesik 4 жыл бұрын
Łał... Zatkało mnie. Właśnie uświadomiłem sobie, że wzorce są czymś, czego nie umiem, a powinienem (jako programista) Z pewnością obejrzę ten materiał nie raz, gdyż "ciut" za szybko się on odbył.
@mikolaj_lewandowski
@mikolaj_lewandowski 5 жыл бұрын
Proszę o kolejne wzorce projektowe!
@wafel_dev
@wafel_dev 5 жыл бұрын
Super, prosimy więcej takich tematów:)
5 жыл бұрын
Ważny i potrzebny temat. Dzięki. Proszę o więcej filmów o zastosowaniu innych wzorców projektów w JS
@skaldycom
@skaldycom 4 жыл бұрын
Super materiał, jasno ciekawie i z PRZYKŁADEM. Jak tak ma wyglądać kurs to biorę w ciemno :D
@b3ncr0w
@b3ncr0w 3 жыл бұрын
Na yt brakuje dobrych materiałów o wzorcach projektowych. Z chęcią obejrzałbym wykorzystanie różnych ich zestawów w praktycznych przykładach ; )
@basiorbb3
@basiorbb3 5 жыл бұрын
Dla juniora na pierwszy rzut oka - kosmos. :D
@PrzemekSmyrdek
@PrzemekSmyrdek 5 жыл бұрын
webgenius Kosmos to skomplikowana sprawa ;P Który fragment jest dla ciebie najciekawszy?
@basiorbb3
@basiorbb3 5 жыл бұрын
Przemek Smyrdek ogólnie to przy subscribe się pogubiłem :) musze to prześledzić jeszcze raz
@danielheir6596
@danielheir6596 3 жыл бұрын
Super odcinek, oby więcej! A jak wzorzec strategii ma się do zasady ponownego wykorzystywania kodu. Gdybyśmy mieli 300 pędzli i nagle zmienia nam się logika pędzli wszystkich. To edytujemy 300 plików?
@Przeprogramowani
@Przeprogramowani 3 жыл бұрын
Ja osobiście nie lubię snuć takich debat bo zanim w danym projekcie pojawi się 300 pędzli to programista trzy razy zmieni pracę :P Teoretycznie jest to problem wart rozważania ale w rzeczywistości tych przypadków będzie raczej zdecydowanie mniej.
@lavok491
@lavok491 5 жыл бұрын
Będę musiał w końcu nauczyć się tych wzorców i je stosować bo obecnie mój kod wygląda tak jak w before... :/
@Przeprogramowani
@Przeprogramowani 5 жыл бұрын
Spokojnie, powoli, jeden po drugim - jakoś pójdzie ;) //Przemek
@ukaszk.6444
@ukaszk.6444 4 жыл бұрын
Jako dodatkową parametryzację można było jeszcze do konstruktora fabryki przekazywać szerokość i kolor narzędzia :)
@karolzielinski1992
@karolzielinski1992 5 жыл бұрын
Super materiał, brakowało takiego 😊 Mam jeszcze pytanie o konwencję nazywania parametrów konstruktora. Raz jest to this.color a raz this._color poprosiłbym o wytłumaczenie różnicy 😊
@PrzemekSmyrdek
@PrzemekSmyrdek 5 жыл бұрын
Karol Zielinski podkreślenie przed nazwą to konwencja która pomaga mi tylko odróżnić wewnętrzne pola klasy od parametrów przychodzących z zewnątrz. Ale to tylko konwencja, nie reguła języka.
@karolzielinski1992
@karolzielinski1992 5 жыл бұрын
Dziękuję!
@DOMAN89
@DOMAN89 4 жыл бұрын
Hej! Gdzie Wy byliście jak się JavaScriptu uczyłem ? :) Dobra robota! Na pewno jak będę miał kiedyś do czynienia z początkującym to playlista jak znalazł + IoC oraz DI. Sub musiał polecieć. Pozdrawiam
@Przeprogramowani
@Przeprogramowani 4 жыл бұрын
Dzięki!! Byliśmy... tak jak ty, przy książkach ;) Teraz dzielimy się tym, co w nich znaleźliśmy :D
@TheBartusZak
@TheBartusZak 4 жыл бұрын
Można prosić o prezentacje wzorców przy wykorzystaniu Vue/React lub Angular?
@Przeprogramowani
@Przeprogramowani 4 жыл бұрын
Pomyślimy :)
@artuturu
@artuturu 5 жыл бұрын
Może odcinek o testach do tego projektu ?
@TomaszOstroga
@TomaszOstroga 4 жыл бұрын
Super material! Brakuje mi tylko dostepu do projektu zeby na spokojnie sobie przeanalizowac lub wrocic do tego w przyszlosci.
@Przeprogramowani
@Przeprogramowani 4 жыл бұрын
github.com/psmyrdek/js-patterns - podaj dalej! :)
@vulcs
@vulcs 2 жыл бұрын
Czy są stosowane w praktyce?
@saragossaxyxy1577
@saragossaxyxy1577 3 жыл бұрын
Brakuje linku do repo na gitcie. Wielka szkoda bo przykład idealny super wytłumaczony.
@Przeprogramowani
@Przeprogramowani 3 жыл бұрын
W opisie jest - Repozytorium z aplikacją - github.com/psmyrdek/js-patterns
@ogladaczfilm
@ogladaczfilm 5 жыл бұрын
Hej. Czytam teraz książkę JavaScript Wzorce - Stoyan Stefano z 2012 i wygląda już na nieaktualną. Z niektórymi wzorcami nigdy się nie spotkałem, ale te co wymieniłeś, są opisane. Czy możesz mi powiedzieć, czy wzorzec: Singleton, Dekorator, Fasada, Mediator, Pośrednik są jeszcze wykorzystywane w projektach?
@Przeprogramowani
@Przeprogramowani 5 жыл бұрын
Pewnie! Singleton, dekorator czy fasada to coś co widzę w wielu współczesnych projektach. Wzorce nie mają jako takiej daty ważności - to czy je spotkasz zależy od tego gdzie patrzysz i kto pisał dany kod (np. autor mógł nie być świadomy, że można dany wzorzec zastosować, a ty możesz wyciągnąć wniosek że ktoś świadomie tego nie zrobił). Z drugiej strony nie można też popadać w drugą skrajność, tzn. mieć ten młotek w postaci wzorców i szukać gwoździ, czyli miejsc do zastosowania, na siłę - to musi być naturalne i na pewno przyjdzie ci wraz z doświadczeniem. // Przemek
@ogladaczfilm
@ogladaczfilm 5 жыл бұрын
@@Przeprogramowani Mam jeszcze jedno pytanie. Jak wygląda u Was tworzenie dobrego jakościowo kodu? Czy planujecie za pomocą schematów i wtedy widzice, że tutaj można zastosować ten wzorzec a tam inny? Czy klepiecie kod jak leci, a później refaktoryzacja kodu?
@PrzemekSmyrdek
@PrzemekSmyrdek 5 жыл бұрын
@@ogladaczfilm Odpowiem za siebie... to zależy :D Jak zaczynam duży projekt to staram się wymyślić wszystkie struktury tak, żeby na wysokim poziomie rozwiązanie mogło się spinać już od początku. To szczególnie ważne wtedy kiedy nad projektem pracuje kilka osób, bo szkielet aplikacji zdefiniuje pracę osób których nie możesz kontrolować co do minuty - chcesz, żeby pracowały w ramach, które zdefiniujesz na początku. Przy mniejszych zmianach czasami podchodzę do kodu po krótszej analizie, bo wtedy kodowanie traktuję po prostu jak szkicowanie. Podchodzę z kilku stron do problemu i sprawdzam co pasuje najlepiej.
@przemysawtkaczyk8390
@przemysawtkaczyk8390 5 жыл бұрын
Hej, fajny filmik ! Ale aż się prosi żeby pilnować DRY i zastosować AbstractClass dla narzędzi Brush i Pencil - więc aż sprawdziłem czy się da to w JSie zrobić ;) Zobacz fork'a: github.com/PrzemekTkaczyk/js-patterns
@PrzemekSmyrdek
@PrzemekSmyrdek 5 жыл бұрын
Dzięki! No i tak, oczywiście można byłoby wyciągnąć cześć wspólną wszystkich narzędzi rysujących w taki sam sposób :) Miałem to z tyłu głowy ale miałem nadzieję na forka :P
@przemysawtkaczyk8390
@przemysawtkaczyk8390 5 жыл бұрын
​@@PrzemekSmyrdek Jeszcze mi brakuje Interfaceów w JSie, są jakieś takie sztuczne obejścia z tego co zauważyłem (np: stackoverflow.com/questions/3710275/does-javascript-have-the-interface-type-such-as-javas-interface)
@TeEsDomin
@TeEsDomin 4 жыл бұрын
Czy założeniem klasy abstrakcyjnej nie miał być brak możliwości tworzenia instancji? W Twoim przykładzie istnieje taka możliwość. Wiem, że w JSie schemat abstrakcji oparty byłby na trikach, ale nazywajmy rzeczy po imieniu :)
@Bajdster
@Bajdster 2 жыл бұрын
Okej z perspektywy osoby początkującej te podejścia nie są w ogóle łatwiejsze niż kod przedstawiony na początku i trochę wygląda to jak utrudnianie sobie życia bo nawet większość tutoriali jak stworzyć daną aplikację przeprowadzana jest proceduralnie. Jak nauczyć sie tego nowego podejścia?
@dawidanonim3355
@dawidanonim3355 4 жыл бұрын
Fajne :)
@Igor-qd2cl
@Igor-qd2cl 4 жыл бұрын
Daje suba liczę na rewanż :D -tak mi sie jakos przypomniało :D
@Famouzi
@Famouzi 4 жыл бұрын
Czy faktycznie zwraca się uwagę na wzorce podczas tworzenia aplikacji np w Reatcie czy po prostu korzystam z nich nieświadomie?
@Przeprogramowani
@Przeprogramowani 4 жыл бұрын
Powiedziałbym, że w większości nieświadomie. Wzorce są ukryte pod warstwą abstrakcji jaką jest framework lub dana biblioteka (rxjs, React, Angular, etc)
@michalmalinowski2122
@michalmalinowski2122 3 жыл бұрын
Cześć, czy można prosić o krótkie wytyczne w jaki sposób uruchomić aplikację?
@PrzemekSmyrdek
@PrzemekSmyrdek 3 жыл бұрын
Pobierz do siebie repozytorium, zainstaluj zależności poprzez "npm install" i uruchom aplikację poprzez "npm start"
@konradpiotrowski9549
@konradpiotrowski9549 4 жыл бұрын
9:30 Popełniliśmy błędy... tak, a z tych największych, to brak średników przez większość kodu. Czy tak to może być?
@PrzemekSmyrdek
@PrzemekSmyrdek 4 жыл бұрын
To co nazywasz błędem poprawią za nas narzędzia takie jak Prettier albo eslint z flagą fix. Odpowiedniej struktury kodu jednak nie zapewnią i to o tym jest ten film.
@devman5813
@devman5813 2 жыл бұрын
Wydaje mi się, że dużo programistów używa ale nie dokońca wie kiedy owych wzorców bo frameworki same wymuszają niektóre zachowania
@pjotreknoname1680
@pjotreknoname1680 4 жыл бұрын
świetna lekcja. Podasz linka do projektu?
@Przeprogramowani
@Przeprogramowani 4 жыл бұрын
github.com/psmyrdek/js-patterns 🚀
@dominiks5318
@dominiks5318 3 жыл бұрын
14:30 po co w konstruktorze ToolsFactory tworzysz wszystkie instancje, zamiast robić to bezpośrednio w getTool() ? Twój przykład nie jest ani wydajny "pamięciowo" ani optymalny pod względem kodu (zbędny konstruktor). 16:30 linia 31 - po co przekazujesz stringa z selectorem zamiast po prostu event z clicka, co dałoby zdecydowanie większe możliwości subscriberom (można pobrać zarówno target jak i w razie potrzeby zablokować propagację)
@Przeprogramowani
@Przeprogramowani 3 жыл бұрын
Ad. 1 - Co zabierze mniej pamięci, raz utworzona instancja i zwracanie tej samej referencji, czy tworzenie nowego obiektu za każdym razem kiedy ktoś klika w to samo narzędzie? Ad. 2 - po to, żeby narzędzia zajmowały się rysowaniem, a nie obsługą eventów, kontaktem z DOM i rysowaniem. (Jeśli pytasz bo szukasz odpowiedzi to odpowiedziałem, jeśli zaczniemy tutaj debatować nad takimi detalami to był to mój ostatni komentarz w tym wątku ;) )
@dominiks5318
@dominiks5318 3 жыл бұрын
@@Przeprogramowani "raz utworzona instancja i zwracanie tej samej referencji," to wcale nie wyklucza cache'owania referencji w factory np. return this.someTool ?? : (this.someTool = new SomeTool()). Chodziło mi wyłącznie o to że tworzysz 3 instancje podczas gdy korzystający z twojego factory user może używać zawsze tylko jednej. Z resztą popełniłeś tam więcej błędów, bo getTool powinno być statyczną metodą a Factory nie powinno być również instancjonowane więcej niż 1 raz, a u ciebie jest to konieczne gdy user chce go użyć w różnych modułach zamiast zrobić to jako Factory.getTool('tool').
@dominiks5318
@dominiks5318 3 жыл бұрын
@@Przeprogramowani co do Ad2 subscribers to nie są przecież narzędzia sam powiedziałeś "będą to jakieś funkcje czy też jakieś byty, które będą nasłuchiwać na zmianę narzędzi"
@Przeprogramowani
@Przeprogramowani 3 жыл бұрын
Ok rozumiem, wypowiem się w poniedziałkowym filmie na ten temat :)
@dominiks5318
@dominiks5318 3 жыл бұрын
@@Przeprogramowani który powinien mieć w tytule "Singleton" bo właśnie tego zabrakło. Pozdrawiam
@gigashooty4482
@gigashooty4482 3 жыл бұрын
w js już nie trzeba pisać " ; " czy to jest jakiś plugin do VSC ?
@Przeprogramowani
@Przeprogramowani 3 жыл бұрын
Nigdy nie było takiej konieczności, średniki są opcjonalne w JS: flaviocopes.com/javascript-automatic-semicolon-insertion/
@gigashooty4482
@gigashooty4482 3 жыл бұрын
@@Przeprogramowani ok dzięki
@marcindomanski5654
@marcindomanski5654 4 жыл бұрын
Mniej więcej na tej zasadzie stworzyłem swoją aplikację: kzbin.info/www/bejne/mGPCg6V_hr52gM0 Musiałem tylko przemodelować założenia, bo te z filmiku są za bardzo sztywne. Ale ogólny wzór jest taki jak u ciebie.
@Przeprogramowani
@Przeprogramowani 4 жыл бұрын
No i brawo :) Dobra muza!
Czym jest dług technologiczny? | Przeprogramowany vLog v.0.0.37
7:46
Un coup venu de l’espace 😂😂😂
00:19
Nicocapone
Рет қаралды 10 МЛН
Стойкость Фёдора поразила всех!
00:58
МИНУС БАЛЛ
Рет қаралды 7 МЛН
Part 5. Roblox trend☠️
00:13
Kan Andrey
Рет қаралды 2,5 МЛН
Which One Is The Best - From Small To Giant #katebrush #shorts
00:17
Programowanie funkcyjne dla ludzi | Przeprogramowani ft. code v0.0.28
11:58
Z TYCH 3 POWODÓW ODRZUCAMY KANDYDATÓW DO PRACY
11:44
Marek Zając
Рет қаралды 25 М.
Jak działa Event Loop w JavaScript? | Przeprogramowani ft. code v0.0.23
10:35
All Rust features explained
21:30
Let's Get Rusty
Рет қаралды 314 М.
The Most Important Design Pattern in React
35:04
Cosden Solutions
Рет қаралды 73 М.
Un coup venu de l’espace 😂😂😂
00:19
Nicocapone
Рет қаралды 10 МЛН