Wzorce projektowe

0

Witam, uczę się wzorców projektowych już z czwarty dzień(2-3 godzinki dziennie).

Przez wzorce kreacyjne przeleciałem dość szybko jednak stoję drugi dzień na strukturalnych i nie mogę rozumieć idei konkretnych wzorców i wymyślić przypadku, który by odpowiadał wzorcowi.

Np. Decorator i Composite.

Czy wzorce strukturalne są dość często używane w pracy?

0

Z decoratora czasem korzystam jak musze roszczerzac dana funkcjonalnosc w rozne strony i rozne kombinacje tych stron;) Np taki sztandarowy przykład to prezentacja danych w jakims widoku. Postawowa funkcjonalnosc polega na tym, zeby te dane wylistowac. Potem mozna zrobic listowanie + paging, albo listowanie + scroll. Potem np dochodza nowe wymagania i dochodzi tez jakies dziwne filtrowanie tylko tych, ktore sa do pagingu, albo tych do scrolla i (zalozmy) kilka roznych kombinacji. Mozna to rozwiazac na kilka sposobow. Jednym z nich jest zrobienie klasy bazowej ViewData i dziedziczac po niej tworzyc ScrollableViewData, ViewDataWithPaging, OrderedViewData, OrderedScrollableViewDataWithPaging... i jak widzisz juz nazwy klas sie robia co najmniej glupie;) Tutaj bardzo dobrze sprawdzilby sie decorator i klasy typu ViewData, ScrollableDataDec, OrderedDataDec itd. Przykald troche uproszczony ale praktycznie miaelm z czyms podobnym do czynienia

3

Robisz to źle. Nikt cię nie goni. Chcesz przerobić w 10 godzin (4 dni * 2,5 godziny) coś, czego prawidłowego stosowania się człowiek uczy przez lata? ;)

Przez wzorce kreacyjne przeleciałem dość szybko

Przelecieć nikt ci nie broni, ale miej świadomość, że z takiego szybkiego przelecenia niczego się nie nauczysz praktycznie, a jedynie będziesz miał świadomość, że coś takiego istnieje. Co też może być zaletą. Np. będziesz miał kiedyś trudny problem i pomyślisz "kurczę, czytałem, że jest taki wzorzec, poczytam jeszcze raz, teraz dokładniej, może go zastosuję".

Ale jednak nie wyobrażaj sobie, że przez kilka godzin poznasz wszystkie wzorce i będziesz je od razu umiał stosować w praktyce bo sobie coś tam poczytałeś. To tak nie będzie raczej.

nie mogę rozumieć idei konkretnych wzorców i wymyślić przypadku, który by odpowiadał wzorcowi.

Bo masz za mało doświadczenia praktycznego. Programuj, programuj, programuj, rozwiązuj różne faktyczne problemy a potrzeba wzorców się pojawi, albo nawet przez przypadek wymyślisz samemu coś, na co już jest wzorzec (tak powstały ponoć wzorce, że to nie było nic nowego, tylko coś, co i tak programiści stosowali przez lata).

Nauka wzorców dla samych wzorców, i to przez kilka godzin jedynie, to trochę jak nauka słów: dzień dobry, do widzenia, dziękuję, poproszę piwo, w obcym języku. Taka znajomość pozwoli ci zamówić piwo, ale nie będziesz mógł przeprowadzić porządnej konwersacji.

0

Wiem, że nie nauczę się tych wzorców w tak krótkim czasie i potrzeba praktyki.

Dlatego założyłem, że przerobie istniejące wzorce, poznam sytuacje gdy można je zastosować. A gdy będę programować i będzie z czymś problem to będę wiedzieć jaki wzorzec może pasować i wtedy zerknę jeszcze raz na niego i zaimplementuje.

1

Ktoś tam kiedyś powiedział podobne zdanie: Design patterns are better discovered than learned czy coś w tym stylu.

Na tym pytaniu na SO masz więcej napisane: http://stackoverflow.com/questions/315000/how-to-study-design-patterns

1

imo wzorce strukturalne sa bardzo istotne (zeby nie powiedziec najistotniejsze) przy budowie kazdego wiekszego systemu. ich zrozumienie przychodzi z czasem, w miare zauwazania jak beznadziejnie zorganizowany jest projekt z ktorym przyszlo ci pracowac ;)

przyklady na twoje wzorce ktore znajdziesz w .net frameworku:
decorator - Stream i jego pochodne (FileStream, GZipStream, BufferedStream, CryptoStream etc)
composite - chyba kazdy gui framework na tym polega np. WinForms ( Control, Panel, Button, DataGridView etc)

0

Czy wzorce strukturalne są dość często używane w pracy?

Wzorców projektowych używa każdy piszący nietrywialny projekt, nawet jeśli o tym nie wie. Pasuje jednak trochę poczytać o wzorcach by nie musieć wynajdywać koła od nowa. Z drugiej strony nie należy implementować wzorców na siłę i trzeba znać zarówno dobre jak i słabe strony każdego używanego wzorca.

0

Trzeba po prostu pisać. Ja niektórych wzorców też nie mogłem do końca skumać dopóki po prostu nie napisałem z nimi troche kodu / nie trafiłem na problem gdzie dany wzorzec po prostu doskonale pasował i rozwiązywał skomplikowaną kwestię. Nie czytaj tylko pisz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1