Web Analytics

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Wzorzec projektowy (informatyka) - Wikipedia, wolna encyklopedia

Wzorzec projektowy (informatyka)

Z Wikipedii

Ujednoznacznienie
Ten artykuł dotyczy informatyki. Zobacz też: inne znaczenia wzorca projektowego.

Wzorzec projektowy – w inżynierii oprogramowania, uniwersalne, sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych problemów projektowych.

Spis treści

[edytuj] Historia

Koncepcję uchwycenia idei projektowych jako rodzaju wzorca przypisuje się zwykle amerykańskiemu architektowi nazwiskiem Christopher Alexander[1] [2]. Wzorce Alexandra zostały pomyślane jako zestaw sprawdzonych koncepcji architektonicznych służacych konstruowaniu środowiska mieszkalnego i środowiska pracy zarówno dla jednostek jak i dla społeczności. W architekturze pomysł wzroców się nie przyjął.

Termin wzorca projektowego (ang. design pattern) został wprowadzony do inżynierii oprogramowania w 1995 roku w książce Design Patterns autorstwa Gammy, Helma, Johnsona i Vlissidesa (zwanych zwykle "bandą czworga" - ang. Gang of Four)[3].

[edytuj] Wzorce rozwiązań

Wzorce projektowe najczęściej tworzone są w oparciu o programowanie obiektowe. Zakres tego pojęcia stał się problemem rozważanym przez ostatnie od połowy lat 90. XX wieku. Ostatecznie ustalono, że algorytmy nie są wzorcami projektowymi, jako że rozwiązują problemy obliczeniowe, a nie projektowe. Wzorce często są łączone w celu rozwiązania bardziej złożonego problemu.

Zamiast skupiać się na funkcjonowaniu poszczególnych elementów, wzorce projektowe stanowią abstrakcyjny opis zależności pomiędzy klasami, co w efekcie doprowadza do pewnej standaryzacji kodu i czyni go bardziej zrozumiałym, efektywniejszym i mniej zawodnym. Wartość wzorców projektowych stanowi nie tylko samo rozwiązanie problemu, ale także dokumentacja, która wyjaśnia cel, działanie, zalety danego rozwiązania, co pomaga w łatwiejszym stosowaniu i adaptacji wzorców w danym zastosowaniu.

Wzorce projektowe mogą przyspieszyć proces rozwoju oprogramowania przez dostarczenie wypróbowanych rozwiązań dla problemów, które mogą nie być oczywiste na początku procesu projektowego. Często zagadnienia te wiążą się z ewolucją oczekiwań względem projektowanego systemu: rozszerzeniem jego funkcjonalności, zmianą sposobu i formatu wprowadzanych danych czy dostosowaniem aplikacji do różnych klas użytkowników. Nie uwzględnienie ich na początku procesu rozwoju produktu programistycznego powoduje często konieczność gruntownego przebudowywania zaawansowanego lub gotowego już oprogramowania.

[edytuj] Klasyfikacja

"Banda czworga" wyróżniła trzy typy wzorców:

  • Wzorce konstrukcyjne (ang. creational design patterns) - wykorzystywane do pozyskiwania obiektów zamiast bezpośredniego tworzenia instancji klas:
  • Wzorce strukturalne (ang. structural design patterns) pomagają łączyć obiekty w większe struktury:
  • Wzorce czynnościowe (ang. behavioral design patterns) służą do zdefiniowania komunikacji pomiędzy obiektami oraz kontrolowania przepływu danych w złożonej aplikacji.

[edytuj] Dokumentacja

Dokumentacja wzorca projektowego powinna zawierać dość informacji o rozwiązywanym problemie, kontekst w jakim należy go stosować, oraz sugerowane rozwiązanie. Różni autorzy mogą stosować odmienne style tworzenia takiej dokumentacji, ale zwykle jej najważniejsze elementy są do siebie podobne.

Jeden z najpopularniejszych układów opisu wzorca projektowego pochodzi od Bandy Czworga i został podzielony na następujące sekcje:

Nazwa wzorca projektowego oraz Klasyfikacja
Każdy wzorzec powinien posiadać opisową oraz unikalną nazwę, która pomaga w jego rozpoznaniu oraz odwoływaniu się do niego. Wzorzec powinien zostać zakwalifikowany zgodnie z pewnym schematem, np. takim, jak ten zaproponowany przez Bandę Czworga. Klasyfikacja ułatwia stosowanie wzorca.
Intencja
Opis celu, który stoi za wzorcem oraz powody jakimi się należy kierować podczas jego wyboru.
Inne nazwy wzorca
Wzorzec może mieć więcej niż jedną nazwę, co powinno zostać udokumentowane.
Motywacja
Scenariusz zawierający problem powiązany z kontekstem, w który wzorzec może być stosowany.
Stosowalność
Przedstawienie sytuacji, w której wzorzec jest użyteczny reprezentujące jego część związaną z kontekstem.
Struktura
Graficzna reprezentacja wzorca zwykle jako schematy UML dotyczące klasy oraz interakcji.
Elementy
Lista klas i obiektów stosowanych w tym wzorcu oraz ich znaczenie.
Powiązania
Opis wzajemnej interakcji klas i obiektów wykorzystywanych we wzorcu.
Konsekwencje
Przedstawienie skutków ubocznych oraz innych kosztów, które powoduje zastosowanie wzorca.
Implementacja
Prezentuje implementację wzorca reprezentując część wzorca związaną z rozwiązaniem. Przedstawienie technik stosowanych podczas praktycznego wykorzystania wzorca, sugeruje najlepsze drogi do udanej implementacji.
Przykładowy kod
Ilustracja jak wzorzec może zostać zastosowany w jednym z języków programowania.
Przykłady zastosowania
Znany przykłady zastosowania wzorca w rzeczywistych programach.
Związane wzorce
Odniesienie wzorca do innych, z którymi się wiąże przez wspólne stosowanie, lub można go z nimi zamienić oraz przedstawienie różnic w stosunku do podobnych wzorców.

[edytuj] Źródła

  1. Alexander, C., The Timeless Way of Building, Oxford University Press 1979
  2. Alexander C., Sara Ishikawa, Murray Silverstein, The Pattern Language: Towns, Buildings, Construction, Oxford University Press 1977
  3. Gamma E., Helm R., Johnson R., Vlissides J., Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley 1997, ISBN 83-204-3041-0

[edytuj] Zobacz także

  • Antywzorce, Anty-wzorce - przykłady wzorców postępowania lub projektowania, których należy unikać

[edytuj] Linki zewnętrzne


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -