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

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

Wzorzec projektowy (ang. Design pattern) – 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żących konstruowaniu środowiska mieszkalnego i środowiska pracy zarówno dla jednostek jak i dla społeczności. W architekturze pomysł wzorców się nie przyjął.

Termin wzorca projektowego (ang. design pattern) został wprowadzony do inżynierii oprogramowania przez Kenta Becka około 1987 roku a następnie spopularyzowany w 1995 roku w książce Design Patterns autorstwa Gammy, Helma, Johnsona i Vlissidesa (zwanych zwykle "Bandą Czworga" lub "Bandą Czterech" - 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 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:

[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 unikatową 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, Christopher, The Timeless Way of Building, Oxford University Press, 1979, ISBN 978-0-19-502402-9.
  2. Alexander Christopher, Sara Ishikawa, Murray Silverstein, The Pattern Language: Towns, Buildings, Construction, Oxford University Press, 1977, ISBN 978-0-19-501919-3.
  3. Gamma Erich, Helm Richard, Johnson Ralph, Vlissides John, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1997, ISBN 978-0-201-63361-0 (Wyd. pol. Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku, WNT, Warszawa, 2005, ISBN 83-204-3041-0).

[edytuj] Zobacz też

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

[edytuj] Linki zewnętrzne

Static Wikipedia (no images)

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 -

Static Wikipedia 2007 (no images)

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 -

Static Wikipedia 2006 (no images)

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 - 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

Static Wikipedia February 2008 (no images)

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