Wzorce projektowe - jak to jest z ich stosowaniem ?

0

Miałbym do Was pytanie odnośnie stosowania wzorców projektowych. Materiałów w sieci jest mnóstwo. Wszystkie mówią mniej więcej, iż warto stosować wzorce projektowe, ale trzeba uważać kiedy i do czego stosujemy dany wzorzec..

I właśnie.. Ja jako osoba, która wyłącznie teoretycznie miała okazję zetknąć się z wzorcami projektowymi zastanawiam się, do jakich przypadków zastosować dany wzorzec (oczywiście przykłady zastosowań również łatwo znaleźć, ale ... )

Biorąc znaleziony przykład odpowiedniego rozdzielenia GUI od logiki biznesowej - to jako przykłady zastosowań wzorców podano: Builder, Mediator, Command Pattern,... i teraz jak zdecydować, który z tych wzorców jest najlepszy :-@

Podsumowując swój wywód.. Chciałbym, abyście napisali mi jakich wzorców projektowych mieliście Wy okazje implementować i w jakich konkretnych 'kontekstach' stosowaliście dany wzorzec projektowy.. (te przykłady w sieci nie do końca mnie przekonują.. patrząc chociażby na przykład GUI..)

0

command pattern - mozna do gier stosować na przykład.

1

który z tych wzorców jest najlepszy - nie ma najlepszego wzorca, każdy ma inne zastosowanie, został opracowany na rzecz rozwiązania danego problemu. Z reguły, wzorce projektowe nie znaczą, że trzeba się ich trzymać, bo nie od tego są. Wzorce projektowe to zbiór opracowanych rozwiązań na dane zagadnienie projektowe, zostały zestawione w taki sposób, by nie głowić się nad najbardziej popularnymi problemami, tylko móc z nich skorzystać, bo ktoś już to wymyślił. Można z nich korzystać, ale nie trzeba.

Co do zastosowań - musisz się zapoznać z wzorcami od strony praktycznej, jeżeli już teorię opanowałeś. A to po to, żeby potrafić w przyszłości znaleźć zastosowanie, a nie na siłę je upychać w proste mechanizmy. Dużo tego znajdziesz np. na codeproject.com - są wzorce niektóre przedstawione z opisem i przykładowym projektem do nich.

@LukeJL: command pattern w grach - tak, ale trochę zmieniony i rozszerzony o system eventów. Najlepszym przykładem do tego wzorca tutaj może być Paint - jak zaprogramować możliwość cofania i ponawiania akcji(rysowanie, przeskalowanie, obrócenie?) - właśnie za pomocą Komedy. Do danego działania jest tworzona konkretna komenda, która wywołuje odpowiednie czynności i zachowuje wykonane posunięcia w jakimś kontenerze - jako historia komend.

Poczytaj trochę o każdym z osobna wzorcu, praktycznym zastosowaniu - jak któregoś nie zrozumiesz, to podaj konkret, chętnie odpowiemy. O wszystkich wzorcach ciężko rozpisać się w jednym poście...

PS. Dobry ruch - wzorce projektowe są ważnym elementem programowania. Często na początku egzaminowania programisty właśnie z tego jest się odpytywanym.

0

@Bhoogy nie liczyłbym na zbyt wiele odpowiedzi. Bo po kilku latach w zawodzie użyłeś/widziałeś większość wzorców w praktyce. Niektóre dziesiątki razy.

0

@Shakaz - z tym 'który najlepszy' to trochę przegiąłem (nie o to mi chodziło, który jest najlepszy...)

@Shalom - to właśnie fajnie byłoby, gdybyś Ty (oraz inny forumowicze) podali przykłady użyć tych wzorców..

Wcześniej (w pierwszym poście) wspominałem o użyciu Builder, Mediator, Command Pattern do budowy GUI..
W sieci znalazłem jeszcze fajny przykład użycia Decorator'a, gdzie mamy klasę Pizze jako bazę i następnie Pizze z różnymi dodatkami..

Na upartego można powiedzieć, że znalazłem jeszcze kilka innych przykładów wzorców projektowych, ale były one dość "oderwane" od rzeczywistości..

Ogólnie te wzorce projektowe ... hm.. pewnie się przydają, ale trzeba dobrze je wpasować w problem ... :P

0

@Bhoogy życia by mi nie starczyło na opisywanie ;] Pójdziesz do pracy i raz dwa sie z tym ogarniesz.

0

gdzie mamy klasę Pizze jako bazę i następnie Pizze z różnymi dodatkami
ale były one dość "oderwane" od rzeczywistości

I czego się z tej rzekomej Pizzy nauczyłeś ? Myślisz, że teraz znajdziesz zastosowanie dekoratora? Wątpie..
Tak samo jak tłumaczenie obiektowości na przykładzie zwierząt... Opieraj się właśnie na tych oderwanych od rzeczywistości, najwięcej praktyki z nich wyniesiesz. Dobrym przykładem użycia dekoratora może być klasa Okna. Zamiast tworzyć pochodne klasy Okno, czyli OknoZRamką, OknoZPaskiem, OknoZXXX, tworzysz jedną klasę Okna i przyozdabiasz ją za pomocą dekoratora - czy ma posiadać Ramkę, Pasek, XXX. W podstawowym podejściu(hierarchia klas) musiałbyś tworzyć OknoZRamkąIPaskiem(już nie wspominając problem z umieszczeniem takich klas w hierarchii) i inne takie dziwaczne połączenia.

0

@Shalom , @Shakaz - ok, dzięki za odpowiedzi... life goes on.. ;]

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