Wzorce projektowe: Różnice pomiędzy wersjami

Z Encyklopedia Zarządzania
m (Infobox update)
 
(LinkTitles.)
Linia 21: Linia 21:
* Nazwy wzorca – dzięki jednoznacznemu nazewnictwu możemy ułatwić komunikacje pomiędzy osobami w grupie projektowej, wiedząc że każdy mówi o tym samym. Pozwala to również na łatwiejszą analizę dokumentacji i skrócenie fragmentów odpowiadających z dany [[wzorzec]].
* Nazwy wzorca – dzięki jednoznacznemu nazewnictwu możemy ułatwić komunikacje pomiędzy osobami w grupie projektowej, wiedząc że każdy mówi o tym samym. Pozwala to również na łatwiejszą analizę dokumentacji i skrócenie fragmentów odpowiadających z dany [[wzorzec]].
* Opis problemu – określa kiedy dany wzorzec projektowy może być zastosowany. Czasami w opisie znajduje się [[algorytm]] lub lista warunków wymaganych do zaistnienia okoliczności których rozwiązanie opisuje wzorzec.  
* Opis problemu – określa kiedy dany wzorzec projektowy może być zastosowany. Czasami w opisie znajduje się [[algorytm]] lub lista warunków wymaganych do zaistnienia okoliczności których rozwiązanie opisuje wzorzec.  
* Rozwiązanie – opis elementów oraz relacji między nimi które pozwalają na szybkie i sprawdzone rozwiązanie opisywanego problemu. Rozwiązanie nie jest nigdy konkretnym [[projekt]]em lub konkretną implementacja, a raczej szablonem do zastosowania
* Rozwiązanie – opis elementów oraz relacji między nimi które pozwalają na szybkie i sprawdzone rozwiązanie opisywanego problemu. Rozwiązanie nie jest nigdy konkretnym [[projekt]]em lub konkretną [[implementacja]], a raczej szablonem do zastosowania
* Konsekwencje – opis jakie są [[zysk]]i, [[koszt]]y oraz oczekiwane efekty w momencie zastosowania wzorca. Dobrze opisane konsekwencje pozwalają na świadome podjęcie decyzji o wykorzystaniu danego wzorca.  
* Konsekwencje – opis jakie są [[zysk]]i, [[koszt]]y oraz oczekiwane efekty w momencie zastosowania wzorca. Dobrze opisane konsekwencje pozwalają na świadome podjęcie decyzji o wykorzystaniu danego wzorca.  
<google>t</google>
<google>t</google>


==Historia==
==Historia==
Wzorce projektowe w informatyce pochodzą z wzorców projektowych w architekturze, które były zapropowane przez austriackiego architekta Christophera Alexandra i na celu miały ułatwić projektowanie mieszkań, przestrzeni oraz pomieszczeń biurowych. Jego pomysł jednak nie został pozytywnie przyjęty w praktyce. Inaczej praktyka ta znalazła zastosowanie w informatyce. Pojęcie wzorca projektowego został wprowadzony do inżynierii oprogramowania dzięki dwóm informatykom, Kent Beck i Ward Cunningham w 1987 roku. Na konferencji OOPSLA, upublicznili oni wyniki swojego eksperymentu który dotyczył zastosowania w programowaniu. Twórcami koncepcji wzorców jest Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides, nazwanych "Bandą czworga”. Są autorami książki "Wzorce projektowe. Elementy oprogramowania wielokrotnego użytku, gdzie opisują 23 podstawowe wzorce projektowe.
Wzorce projektowe w informatyce pochodzą z wzorców projektowych w architekturze, które były zapropowane przez austriackiego architekta Christophera Alexandra i na celu miały ułatwić [[projektowanie]] mieszkań, przestrzeni oraz pomieszczeń biurowych. Jego pomysł jednak nie został pozytywnie przyjęty w praktyce. Inaczej praktyka ta znalazła zastosowanie w informatyce. Pojęcie wzorca projektowego został wprowadzony do inżynierii oprogramowania dzięki dwóm informatykom, Kent Beck i Ward Cunningham w 1987 roku. Na konferencji OOPSLA, upublicznili oni wyniki swojego eksperymentu który dotyczył zastosowania w programowaniu. Twórcami koncepcji wzorców jest Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides, nazwanych "Bandą czworga”. Są autorami książki "Wzorce projektowe. Elementy oprogramowania wielokrotnego użytku, gdzie opisują 23 podstawowe wzorce projektowe.


   
   
==Wzorce projektowe a tworzenie oprogramowania==
==Wzorce projektowe a tworzenie oprogramowania==
[[Programowanie obiektowe]] opiera się na tworzeniu obiektów, które mają swoje odpowiedniki w modelu biznesowym danej aplikacji. Dzięki temu architektura systemu informatycznego zbliża się do modelu opisywanego wycinka rzeczywistości. Wzorce projektowe pomagają programiście na identyfikacje mniej oczywistych abstrakcji systemowych, które nie koniecznie wynikają wprost z przekazanych wymagań – stanowią jednak fundament do tworzenia elastycznego oprogramowania. Przeniesienie dokładnie modelu rzeczywistości do kodu oprogramowania spowodowało by że kod stałby się trudny w utrzymaniu i rozwoju.  
[[Programowanie obiektowe]] opiera się na tworzeniu obiektów, które mają swoje odpowiedniki w modelu biznesowym danej aplikacji. Dzięki temu architektura systemu informatycznego zbliża się do modelu opisywanego wycinka rzeczywistości. Wzorce projektowe pomagają programiście na identyfikacje mniej oczywistych abstrakcji systemowych, które nie koniecznie wynikają wprost z przekazanych wymagań – stanowią jednak fundament do tworzenia elastycznego oprogramowania. [[Przeniesienie]] dokładnie modelu rzeczywistości do kodu oprogramowania spowodowało by że kod stałby się trudny w utrzymaniu i rozwoju.  
   
   
==Tworzenie oprogramowania wielokrotnego użytku==
==Tworzenie oprogramowania wielokrotnego użytku==
Linia 41: Linia 41:


==Dokumentacja==
==Dokumentacja==
Dokumentacja wzorca projektowego musi zawierać informacje o rozwiązywanym problemie, kontekst w jakim należy się nim posługiwać oraz sugerowane rozwiązanie. Różni autorzy mogą wprowadzać w życie odmienne style tworzenia taj oto dokumentacji, ale zwykle jej najistotniejsze elementy są do siebie podobne. Jeden z najczęściej używanych układów opisu wzorca projektowego został zaproponowany przez Bandę Czterech.
[[Dokumentacja]] wzorca projektowego musi zawierać [[informacje]] o rozwiązywanym problemie, kontekst w jakim należy się nim posługiwać oraz sugerowane rozwiązanie. Różni autorzy mogą wprowadzać w życie odmienne style tworzenia taj oto dokumentacji, ale zwykle jej najistotniejsze elementy są do siebie podobne. Jeden z najczęściej używanych układów opisu wzorca projektowego został zaproponowany przez Bandę Czterech.
* Nazwa wzorca oraz klasyfikacja: opisowa oraz unikalna nazwa, umożliwiająca identyfikację oraz odwoływanie się do wzorca; klasyfikacja według jednego ze schematów.
* Nazwa wzorca oraz [[klasyfikacja]]: opisowa oraz unikalna nazwa, umożliwiająca identyfikację oraz odwoływanie się do wzorca; klasyfikacja według jednego ze schematów.
* Przeznaczenie: opis celu, który stoi za wzorcem oraz powody, jakimi należy się kierować podczas jego wyboru.
* Przeznaczenie: opis celu, który stoi za wzorcem oraz powody, jakimi należy się kierować podczas jego wyboru.
* Inne nazwy: jeżeli istnieją inne, dobrze znane nazwy wzorca, należy je podać.
* Inne nazwy: jeżeli istnieją inne, dobrze znane nazwy wzorca, należy je podać.
* Motywacja: scenariusz zawierający problem powiązany z kontekstem, w którym wzorzec może być stosowany.
* [[Motywacja]]: scenariusz zawierający problem powiązany z kontekstem, w którym wzorzec może być stosowany.
* Stosowalność: sytuacje, w których wzorzec może być użyteczny.
* Stosowalność: sytuacje, w których wzorzec może być użyteczny.
* Struktura: graficzna reprezentacja wzorca, zwykle jako diagram klas lub diagram interakcji.
* Struktura: graficzna [[reprezentacja]] wzorca, zwykle jako diagram klas lub diagram interakcji.
* Uczestnicy: lista klas i obiektów stosowanych w tym wzorcu oraz ich zobowiązania.
* Uczestnicy: lista klas i obiektów stosowanych w tym wzorcu oraz ich [[zobowiązania]].
* Współpraca: opis wzajemnej interakcji klas i obiektów wykorzystywanych we wzorcu.
* Współ[[praca]]: opis wzajemnej interakcji klas i obiektów wykorzystywanych we wzorcu.
* Konsekwencje: wykaz wyników, efektów ubocznych oraz kompromisów jakie występują podczas użycia wzorca.
* Konsekwencje: wykaz wyników, efektów ubocznych oraz kompromisów jakie występują podczas użycia wzorca.
* Implementacja: wskazówki dotyczące implementacji wzorca; zwrócenie uwagi na specyficzne kwestie.
* Implementacja: wskazówki dotyczące implementacji wzorca; zwrócenie uwagi na specyficzne kwestie.
Linia 62: Linia 62:
* Chak D., [http://witmir.pl/spis_pdf/rails_projektowanie_systemow_klasy_enterprise-456860.pdf ''Rails. Projektowanie systemow klasy enterprice.]'' Wyd. Helion SA tł. Grażyński A 2010.
* Chak D., [http://witmir.pl/spis_pdf/rails_projektowanie_systemow_klasy_enterprise-456860.pdf ''Rails. Projektowanie systemow klasy enterprice.]'' Wyd. Helion SA tł. Grażyński A 2010.
* Chmielarz W. [http://ptzp.org.pl/files/konferencje/kzz/artyk_pdf_2014/T2/t2_769.pdf ''Metoda konfrontacyjna porjektowania wzorcowego systemów informatycznych jako realizacja idei projektowania poprzez usługi.]'' Uniwersytet Warszawski 2014.
* Chmielarz W. [http://ptzp.org.pl/files/konferencje/kzz/artyk_pdf_2014/T2/t2_769.pdf ''Metoda konfrontacyjna porjektowania wzorcowego systemów informatycznych jako realizacja idei projektowania poprzez usługi.]'' Uniwersytet Warszawski 2014.
* Craig L., ''[[UML]] i wzorce projektowe. Analiza i projektowanie obiektowe oraz iteracyjny model wytwarzania aplikacji'', Helion, Gliwice 2011
* Craig L., ''[[UML]] i wzorce projektowe. Analiza i projektowanie obiektowe oraz iteracyjny [[model]] wytwarzania aplikacji'', Helion, Gliwice 2011
* Darwin I.F., [ftp://ftp.helion.pl/online/jarecp/jarecp-8.pdf ''Java. Receptury.]'' Wyd. Helion, Gliwice 2011.
* Darwin I.F., [ftp://ftp.helion.pl/online/jarecp/jarecp-8.pdf ''Java. Receptury.]'' Wyd. Helion, Gliwice 2011.
* Gamma E., Helm R. Johnson R. Vlissides J. ''Wzorce projektowe'', Helion, Gliwice 2010
* Gamma E., Helm R. Johnson R. Vlissides J. ''Wzorce projektowe'', Helion, Gliwice 2010

Wersja z 18:13, 22 maj 2020

Wzorce projektowe
Polecane artykuły


Wzorce projektowe – są informatycznym określeniem zbioru sprawdzonych i wypróbowanych teorii w programowaniu obiektowym, którymi można najczęściej posługiwać się podczas występujących problemów programistycznych. Ukazuje powiązania i zależności między klasami i obiektami i ułatwia kreowanie, modyfikowanie oraz pielęgnacje kodu źródłowego.

Wzorce składają się z 4 elementów

  • Nazwy wzorca – dzięki jednoznacznemu nazewnictwu możemy ułatwić komunikacje pomiędzy osobami w grupie projektowej, wiedząc że każdy mówi o tym samym. Pozwala to również na łatwiejszą analizę dokumentacji i skrócenie fragmentów odpowiadających z dany wzorzec.
  • Opis problemu – określa kiedy dany wzorzec projektowy może być zastosowany. Czasami w opisie znajduje się algorytm lub lista warunków wymaganych do zaistnienia okoliczności których rozwiązanie opisuje wzorzec.
  • Rozwiązanie – opis elementów oraz relacji między nimi które pozwalają na szybkie i sprawdzone rozwiązanie opisywanego problemu. Rozwiązanie nie jest nigdy konkretnym projektem lub konkretną implementacja, a raczej szablonem do zastosowania
  • Konsekwencje – opis jakie są zyski, koszty oraz oczekiwane efekty w momencie zastosowania wzorca. Dobrze opisane konsekwencje pozwalają na świadome podjęcie decyzji o wykorzystaniu danego wzorca.

Historia

Wzorce projektowe w informatyce pochodzą z wzorców projektowych w architekturze, które były zapropowane przez austriackiego architekta Christophera Alexandra i na celu miały ułatwić projektowanie mieszkań, przestrzeni oraz pomieszczeń biurowych. Jego pomysł jednak nie został pozytywnie przyjęty w praktyce. Inaczej praktyka ta znalazła zastosowanie w informatyce. Pojęcie wzorca projektowego został wprowadzony do inżynierii oprogramowania dzięki dwóm informatykom, Kent Beck i Ward Cunningham w 1987 roku. Na konferencji OOPSLA, upublicznili oni wyniki swojego eksperymentu który dotyczył zastosowania w programowaniu. Twórcami koncepcji wzorców jest Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides, nazwanych "Bandą czworga”. Są autorami książki "Wzorce projektowe. Elementy oprogramowania wielokrotnego użytku, gdzie opisują 23 podstawowe wzorce projektowe.


Wzorce projektowe a tworzenie oprogramowania

Programowanie obiektowe opiera się na tworzeniu obiektów, które mają swoje odpowiedniki w modelu biznesowym danej aplikacji. Dzięki temu architektura systemu informatycznego zbliża się do modelu opisywanego wycinka rzeczywistości. Wzorce projektowe pomagają programiście na identyfikacje mniej oczywistych abstrakcji systemowych, które nie koniecznie wynikają wprost z przekazanych wymagań – stanowią jednak fundament do tworzenia elastycznego oprogramowania. Przeniesienie dokładnie modelu rzeczywistości do kodu oprogramowania spowodowało by że kod stałby się trudny w utrzymaniu i rozwoju.

Tworzenie oprogramowania wielokrotnego użytku

Wzorce projektowe stanowią ważne narzędzie w tworzeniu oprogramowania wielokrotnego użytku, które wymaga częstych zmian struktury, rozwoju oraz refaktoryzacji (związane to jest np. realizacją nowych wymagań). Wykorzystanie ich w praktyce powoduje ze ilość późniejszych niezbędnych modyfikacji w strukturze programu, a więc do zmniejszenia kosztów zmiany. Jest to związane z cyklem życia oprogramowania obiektowego które przechodzi (w nomenklaturze Briana Foote) fazy prototypów, rozwijania i konsolidowania. Korzyści z zastosowania wzorców projektowych:

  • Uniwersalność rozwiązań powoduje łatwiejsze zrozumienie działania aplikacji przez osoby zaznajamiające się z kodem
  • Zmniejszenie kosztów zmian przez uelastycznienie kodu i użycie rozszerzalnych rozwiązań
  • Stanowią duże ułatwienie w komunikacji pomiędzy programistami
  • Są dobrze udokumentowane, a więc nie muszą znajdować się w dokumentacji aplikacji co powoduje zmniejszenie jej objętości

Dokumentacja

Dokumentacja wzorca projektowego musi zawierać informacje o rozwiązywanym problemie, kontekst w jakim należy się nim posługiwać oraz sugerowane rozwiązanie. Różni autorzy mogą wprowadzać w życie odmienne style tworzenia taj oto dokumentacji, ale zwykle jej najistotniejsze elementy są do siebie podobne. Jeden z najczęściej używanych układów opisu wzorca projektowego został zaproponowany przez Bandę Czterech.

  • Nazwa wzorca oraz klasyfikacja: opisowa oraz unikalna nazwa, umożliwiająca identyfikację oraz odwoływanie się do wzorca; klasyfikacja według jednego ze schematów.
  • Przeznaczenie: opis celu, który stoi za wzorcem oraz powody, jakimi należy się kierować podczas jego wyboru.
  • Inne nazwy: jeżeli istnieją inne, dobrze znane nazwy wzorca, należy je podać.
  • Motywacja: scenariusz zawierający problem powiązany z kontekstem, w którym wzorzec może być stosowany.
  • Stosowalność: sytuacje, w których wzorzec może być użyteczny.
  • Struktura: graficzna reprezentacja wzorca, zwykle jako diagram klas lub diagram interakcji.
  • Uczestnicy: lista klas i obiektów stosowanych w tym wzorcu oraz ich zobowiązania.
  • Współpraca: opis wzajemnej interakcji klas i obiektów wykorzystywanych we wzorcu.
  • Konsekwencje: wykaz wyników, efektów ubocznych oraz kompromisów jakie występują podczas użycia wzorca.
  • Implementacja: wskazówki dotyczące implementacji wzorca; zwrócenie uwagi na specyficzne kwestie.
  • Przykładowy kod: przykład zastosowania wzorca z wykorzystaniem jednego z języków programowania.
  • Przykłady zastosowania: znane przykłady zastosowania wzorca w rzeczywistych programach.
  • Pokrewne wzorce: odniesienie wzorca do innych, z którymi wiąże się przez wspólne stosowanie lub można go z nimi zamienić oraz przedstawienie różnic w stosunku do podobnych wzorców.

Lista najpopularniejszych wzorców projektowych

Adapter, Budowniczy, Dekorator, Fabryka abstrakcyjna, Fasada, Interpreter, Iterator Kompozyt, Łańcuch zobowiązań, Mediator, Metoda szablonowa, Metoda wybiórcza, Most, Obserwator, Odwiedzający, Pamiątka, Pomocnik, Plecenie, Prototyp, Pyłek, Singleton, Stan, Strategia

Bibliografia

Autor: Łukasz Matug, Łukasz Jakosz