肯德基战略联盟东方梦工厂 实力开拓娱乐版图
Wzorzec projektowy (ang. design pattern) – uniwersalne, sprawdzone w praktyce rozwi?zanie cz?sto pojawiaj?cych si?, powtarzalnych problemów projektowych. Pokazuje powi?zania i zale?no?ci pomi?dzy klasami oraz obiektami i u?atwia tworzenie, modyfikacj? oraz utrzymanie kodu ?ród?owego. Jest opisem rozwi?zania, a nie jego implementacj?. Wzorce projektowe stosowane s? w projektach wykorzystuj?cych programowanie obiektowe.
Historia
[edytuj | edytuj kod]Wzorce projektowe w informatyce wywodz? si? z wzorców projektowych w architekturze, które zosta?y zaproponowane przez austriackiego architekta Christophera Alexandra[1][2] i mia?y u?atwi? konstruowanie mieszkań i pomieszczeń biurowych. Pomys? ten nie zosta? jednak przyj?ty.
Inaczej sta?o si? w informatyce. Termin wzorca projektowego zosta? wprowadzony do in?ynierii oprogramowania przez Kenta Becka oraz Warda Cunninghama w 1987 roku. Na konferencji OOPSLA, przedstawili oni wyniki swojego eksperymentu dotycz?cego ich zastosowania w programowaniu. Zosta? spopularyzowany w 1995 przez Gang of Four (Erich Gamma, Richard Helm, Ralph Johnson oraz John Vlissides) dzi?ki ksi??ce Wzorce projektowe: Elementy oprogramowania obiektowego wielokrotnego u?ytku[3].
Wzorce rozwi?zań
[edytuj | edytuj kod]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 wprowadza pewn? standaryzacj? kodu oraz zwi?ksza jego zrozumia?o??, wydajno?? i niezawodno??. 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. Nieuwzgl?dnienie ich na pocz?tku procesu rozwoju produktu programistycznego powoduje cz?sto konieczno?? gruntownego przebudowywania zaawansowanego lub gotowego ju? oprogramowania.
Wzorzec MVC[4]
[edytuj | edytuj kod]MVC (od angielskich s?ów Model, View i Controller) opracowano pod koniec lat 70 jako wzorzec realizacji interfejsu u?ytkownika w j?zyku Smalltalk-80. Nast?pnie wykorzystano go równie? w innych j?zykach i systemach zorientowanych obiektowo.
Trzy sk?adowe tego modelu to:
- Model - G?ówny nacisk k?adzie na logik? aplikacji i logik? biznesow?. Model powinien by? zaprojektowany w taki sposób, aby by? niezale?ny od wybranego rodzaju prezentacji oraz systemu obs?ugi akcji u?ytkownika.
- Widok - zarz?dza graficzn? lub tekstow? prezentacj? modelu. Widok pobiera informacje z modelu, ilekro? zostaje powiadomiony o jego zmianie.
- Kontroler - jest odpowiedzialny za reagowanie na akcji u?ytkownika (np. klikni?cia myszk?), odwzorowuj?c je na operacje zawarte w modelu oraz na zmiany widoku.
Elementy wzorca
[edytuj | edytuj kod]Wzorzec projektowy sk?ada si? z czterech podstawowych elementów:
- nazwy wzorca;
- problemu – opisuje sposoby rozpoznawania sytuacji, w których mo?emy zastosowa? dany wzorzec oraz warunki jakie musz? zosta? spe?nione, by jego zastosowanie mia?o sens;
- rozwi?zania – opisuje elementy rozwi?zania: ich relacje, powi?zania oraz obowi?zki, zawiera tak?e wskazówki implementacyjne dla ró?nych technologii;
- konsekwencji – zestawienie wad i zalet stosowania wzorca, uwzgl?dniaj?ce informacje o jego brakach oraz kosztach rozwoju i utrzymania systemu wykorzystuj?cego dany wzorzec.
Dokumentacja
[edytuj | edytuj kod]Dokumentacja wzorca projektowego powinna zawiera? informacje 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 zosta? zaproponowany przez Band? Czterech[5]
- 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.
Klasyfikacja podstawowa
[edytuj | edytuj kod]Pocz?tkowo Banda Czterech za?o?y?a, ?e istniej? dwa podstawowe rodzaje klasyfikacji wzorców[6]. Pierwsza z nich dotyczy rodzaju wzorca i opisuje to, co on robi. Wed?ug tego kryterium wzorce mo?emy podzieli? na trzy rodziny:
- kreacyjne (konstrukcyjne) – opisuj?ce proces tworzenia nowych obiektów; ich zadaniem jest tworzenie, inicjalizacja oraz konfiguracja obiektów, klas oraz innych typów danych[7];
- strukturalne – opisuj?ce struktury powi?zanych ze sob? obiektów;
- czynno?ciowe (behawioralne, operacyjne[8]) – opisuj?ce zachowanie i odpowiedzialno?? wspó?pracuj?cych ze sob? obiektów.
Drugi model dzieli wzorce na kategorie wed?ug ich zakresów. Kategoryzacja polega na okre?leniu czy wzorzec dotyczy klas, czy obiektów. Tutaj wzorce dzielimy na:
- klasowe – opisuj?ce statyczne zwi?zki pomi?dzy klasami;
- obiektowe – opisuj?ce dynamiczne zwi?zki pomi?dzy obiektami.
Uwzgl?dniaj?c powy?sze za?o?enia klasyfikacja podstawowych wzorców wygl?da nast?puj?co:
- wzorce kreacyjne:
- Budowniczy (obiektowy),
- Fabryka abstrakcyjna (obiektowy),
- Metoda wytwórcza (klasowy),
- Prototyp (obiektowy),
- Singleton (obiektowy);
- wzorce strukturalne:
- wzorce czynno?ciowe/operacyjne:
- ?ańcuch zobowi?zań/odpowiedzialno?ci (obiektowy),
- Polecenie (obiektowy),
- Interpreter (klasowy),
- Iterator (obiektowy),
- Mediator (obiektowy),
- Pami?tka/Memento (ang. Memento) (obiektowy),
- Metoda szablonowa (ang. template method) (klasowy),
- Obserwator (obiektowy),
- Stan (obiektowy),
- Strategia (obiektowy),
- Odwiedzaj?cy/Wizytator (ang. visitor) (obiektowy),
- Zabór Zasobu Jest Inicjalizacj? (obiektowy).
Klasyfikacja rozszerzona
[edytuj | edytuj kod]W pó?niejszym okresie pojawi?y si? inne kategorie wzorców projektowych:
- wzorce wspó?bie?no?ci – definiuj? sposoby wspó?dzia?ania wielu obiektów, w?tków lub procesów; zaliczany do nich:
- Wzorce odwzorowania O-R – opisuj? (mi?dzy innymi) wymian? danych pomi?dzy warstw? danych a warstw? logiki biznesowej:
- Pozosta?e wzorce
Zobacz te?
[edytuj | edytuj kod]Linki zewn?trzne
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ Alexander, Christopher, The Timeless Way of Building, Oxford University Press, 1979, ISBN 978-0-19-502402-9.
- ↑ Alexander Christopher, Sara Ishikawa, Murray Silverstein, The Pattern Language: Towns, Buildings, Construction, Oxford University Press, 1977, ISBN 978-0-19-501919-3.
- ↑ Tytu? oryginalny: ?Design Patterns: Elements of Reusable Object-Oriented Software, ISBN 978-0-201-63361-0.
- ↑ Barbara Filipczyk , Jerzy Go?uchowski , Tworzenie aplikacji internetowych : praca zbiorowa, Katowice: Wydawnictwo Akademii Ekonomicznej im. Karola Adamieckiego, 2008, ISBN 978-83-7246-449-1, OCLC 316477849 [dost?p 2025-08-14] .
- ↑ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: In?ynieria oprogramowania: Wzorce projektowe (Wyd. II). Warszawa: WNT, 2008, s. 7–9. ISBN 978-83-204-3472-9.
- ↑ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: In?ynieria oprogramowania: Wzorce projektowe (Wyd. II). Warszawa: WNT, 2008, s. 12. ISBN 978-83-204-3472-9.
- ↑ Christopher G. Lasater: Design Patterns. Wordware Publishing (Jones and Bartlett Publishers), 2007, s. 302. ISBN 978-1-59822-031-5.
- ↑ 1.5 Struktura katalogu. W: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Wzorce projektowe. Helion, 2010, s. 24. ISBN 978-83-246-2662-5.
Bibliografia
[edytuj | edytuj kod]- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: In?ynieria oprogramowania: Wzorce projektowe (Wyd. II). Warszawa: WNT, 2008. ISBN 978-83-204-3472-9.
- Christopher G. Lasater: Design Patterns. Wordware Publishing (Jones and Bartlett Publishers), 2007, s. 302. ISBN 978-1-59822-031-5.