10.07.2015 Views

Michał Małecki - Informatyka - Sztuka czy Rzemiosło - Uniwersytet ...

Michał Małecki - Informatyka - Sztuka czy Rzemiosło - Uniwersytet ...

Michał Małecki - Informatyka - Sztuka czy Rzemiosło - Uniwersytet ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

KONCEPCJA WZORCÓW PROJEKTOWYCH W JZYKU JAVAMichał MałeckiInstytut Informatyki i Elektroniki, <strong>Uniwersytet</strong> Zielonogórski65-246 Zielona Góra, ul. Podgórna 50e-mail: m.malecki@iie.uz.zgora.plSTRESZCZENIENa pocztku lat 90 w rodowisku programistów zaczto gorco dyskutowa na temat ideiwzorców projektów. Pierwsze prace zwizane były z poszukiwaniem i opisywaniem wzorcówbez odniesienia w konkretnym jzyku programowania. Dopiero praca The Design PatternsSmalltalk Companion opisywała wzorce, ale z punktu widzenia jzyka Smalltalk.Referat ma zaznajomi programistów w jzyku Java z wzorcami projektowymi.Zaprezentowane wzorce zostały podzielone na trzy kategorie: konstrukcyjne, strukturalnei <strong>czy</strong>nnociowe. W drugiej czci omówiono wzorce projektowe dla programistów Java 2Enterprise Edition.1. WPROWADZENIEKady programista przed napisaniem fragmentu kodu tworzy go w swoim umyle. Niestetynie zawsze wizja, która powstanie jest optymalnym rozwizaniem problemu. Programistaczerpie satysfakcj nie tylko z działajcego programu, ale równie z takiego kodu, który jestbardziej ogólnego zastosowania, łatwiejszy do ponownego uycia i wprowadzania zmian.Jednym z głównych powodów, dla których informatyka szuka dobrych wzorcówprojektowych jest zapewnienie dobrych i prostych rozwiza dla czsto wystpujcychproblemów. Termin wzorzec projektowy (ang. design pattern) okrela wygodny sposóbponownego wykorzystania obiektowego kodu w innych projektach i przez innychprogramistów. Idea wzorców jest prosta: skatalogowa te sposoby interakcji midzyobiektami, które bd najbardziej przydatne podczas pisania programów.Wzorce projektowe okrelaj sposoby komunikacji midzy obiektami, bez wdawania si wszczegóły implementacji innego obiektu. Zachowanie takiego podziału jest cech dobregoprogramowania obiektowego.W chwili obecnej nie ma jednej ustalonej definicji pojcia wzorca projektowego. Poniejprzytaczamy kilka definicji wzorców projektowych pochodzcych z literatury:„Wzorce projektowe stanowi powtarzalne rozwizanie zagadnie projektowych, z którymisi wci spotykamy.” [1]173


„Wzorce projektowe stanowi zbiór reguł okrelajcych jak osign pewne cele wdziedzinie programowania.” [2]„Wzorce projektowe w najwikszym stopniu dotycz problematyki ponownego uyciapowtarzajcych si motywów architektury programów, za szkielety aplikacji dotyczszczegółów projektowych i implementacyjnych.” [3]„Wzorzec adresowany jest do powtarzajcych si problemów, które pojawiaj si wspecyficznych momentach projektowania i stanowi dla nich rozwizanie.” [4]„Wzorzec identyfikuje i specyfikuje pewn abstrakcj, której poziom znajduje si powyejpoziomu abstrakcji pojedynczej klasy, instancji lub komponentu.” [5]Jednak naley pamita, e wzorce projektowe nie dotycz jedynie projektowania samychobiektów, lecz równie interakcji midzy nimi. Mona na nie patrze jak na wzorce wkomunikowaniu si obiektów, ale nie jest to spojrzenie pełne, poniewa niektóre wzorce,oprócz sposobów komunikacji, okrelaj strategi dziedziczenia i kompozycji, <strong>czy</strong>lizawieranie si w sobie obiektów.Wzorce nie s wymylane lub opracowywane – s odkrywane. Proces poszukiwania wzorcówprojektowych jest nazywany eksploracj wzorców. Autorzy ksiki [5] skatalogowali 23wzorce projektowe w trzech kategoriach:wzorce konstrukcyjne – wykorzystuje si je do pozyskiwania obiektów zamiastbezporedniego tworzenia instancji klasy,wzorce strukturalne – pomagaj ł<strong>czy</strong> obiekty w wiksze struktury, maj zastosowanie naprzykład w implementacji złoonego interfejsu uytkownika,wzorce <strong>czy</strong>nnociowe – pomagaj zdefiniowa komunikacj pomidzy obiektami ikontrolowa przepływ danych w złoonym programie.Proces zdobywania wiedzy na temat wzorców składa si z nastpujcych faz: akceptacja,rozpoznanie i przyswojenie. Najpierw akceptujemy przesłank o tym, e wzorzec jest dla naswany. Nastpnie rozpoznajemy, jakie ma dla nas znaczenie i gdzie moemy go wykorzysta.W kocu przyswajamy sobie wszystkie szczegóły dotyczce go, abymy potrafili za jegopomoc rozwiza jaki problem.2. WZORCE PROJEKTOWE W JAVA 2ENTERPRISE EDITIONPopularnym wzorcem, który bardzo wczenie pojawił si w literaturze dotyczcejprogramowania jest model-widok-kontroler, (ang. Model-View-Controler – MVC): Data Model (model danych) – cz programu odpowiedzialna zaprzechowywanie i przetwarzanie danych, View (widok) – prezentuje interfejs uytkownika,174


Controller (kontroler) – poredni<strong>czy</strong> midzy uytkownikiem a widokiem.Zapytaniao stanModel- Enkapsulacja stanu- Odpowiada na pytaniao stan aplikacji- Udostpnia funkcjonalnoaplikacji- Powiadamia widokZawiadomienieo zmianachZmianastanuWidok- Wywietla model- da uaktualnienia z modelu- Wysyła dania klientado kontrolera- Pozwala kontrolerowiwybiera widokWybór wyglduAkcje uytkownikaKontroler- Definiuje zachowanie aplikacji- Uaktualnia modelpo akcjach uytkowników- Wybiera widok w odpowiedziWywoływania metodZdarzeniaRys. 1. Architektura wzorca MVCKatalog wzorców projektowych Java 2 Enterprise EditionWszystkie prezentowane w tym punkcie wzorce odnosz si do prezentowanej wczeniejogólnej koncepcji wzorca MVC. Istnieje równie moliwo korzystania z tych wzorcówpoza rozwizaniami bazujcymi na wzorcu MVC.Ze wzgldu na stał ewolucj prezentowanych wzorców, w nawiasach kwadratowych podanonazwy, pod którymi dany wzorzec jest równie znany w innych publikacjach.Data Access Object (DAO)[Data Access Component]Wzorzec DAO jest stosowany do rozdzielenia logiki biznesowej od logiki dostpu do danych.Umoliwia łatwa wymian zasobów takich jak bazy danych bez koniecznoci modyfikacjilogiki biznesowej. Wzorzec warto stosowa w przypadku kiedy moe dochodzi do czstychzmian typów zasobów, a zasoby te maj specyficzne funkcj dostpu. Problem tenrozwizywany jest w J2EE poprzez usunicie kodu programu zapewniajcego dostp dozasobów z Enterprise Java Beans (zwane ziarnami) i utworzenie abstrakcyjnego interfejsudostpu do zasobów.Fast-Lane Reader[Bimodal Data Access]Efektem zastosowania wzorca jest przyspieszanie dostpu do danych w trybie do od<strong>czy</strong>tupoprzez nie uywanie Enterprise Java Beans. Dziki uyciu tego wzorca mona osignwyrany wzrost wydajnoci przy dostpie do duych struktur danych. Mona go stosowa175


tylko do danych, które nie bd modyfikowane i równoczenie dostp do najwieszychdanych nie jest krytyczn cech systemu. Mechanizm nie zastpuje istniejcego sposobudostpu do danych poprzez komponenty EJB – jedynie go uzupełnia.Front Controller[Front Component]Wzorzec słuy do zcentralizowania zarzdzania widokiem – nawigacj, szablonami,bezpieczestwem itp. – w aplikacjach Web-owych. Wprowadza on jeden obiekt obsługujcywszystkie dania przychodzce od klienta. W praktyce wiele aplikacji Web-owych składa siz duej iloci powizanych ze sob stron html. Obsługa takich serwisów jest utrudnionamidzy innymi ze wzgldu na konieczno dokonywania zmian w wielu plikach poprzeniesieniu serwisu w inne miejsce. Dodatkowo zmiana wygldu stron wymaga ichponownej aranacji. Problemy te mona zmniejszy korzystajc z jednego, wspólnego dlawszystkich wywoła klientów kontrolera.Page-by-Page Iterator[Paged List, Value List Handler]Usprawnienie dostpu do duych list danych poprzez pobranie za jednym razem całej listy.W systemach gdzie nastpuje konieczno pobrania duej listy informacji w celu ichzaprezentowania pomocne jest korzystanie z wzorca Page-byPage Iterator, który umoliwiapobranie całej zawartoci listy za jednym razem. W wzorcu udostpnione s metodyumoliwiajce nawigacj po pobranej licie danych.Session Facade[Session Entity Facade, Distributed Facade]Wzorzec Session Facade dostarcza interfejs przypominajcy mechanizm workflow doustawiania stanu ziaren enterprise. Jeden obiekt sesyjny poredni<strong>czy</strong> w komunikacji zwieloma bean-ami sesyjnymi i encjowymi. Zastosowanie wzorca Session Facade skutecznieobnia ruch w sieci oraz uelastycznia system w przypadku zmian w docelowo wywoływanychbean-ach – ich zmiana nie powoduje zmian w obiektach klienta.Value Object[Data Transfer Object, Replicate Object]Wzorzec ten stosowany jest w celu zmniejszenia ruchu w sieci, kiedy w trakcie działaniaaplikacji nastpuje równoczesny od<strong>czy</strong>t wielu atrybutów bean-a. Informacja zawarta watrybutach jest przenoszona na stron klienta, co wymiernie podnosi wydajno aplikacji.176


3. PODSUMOWANIEKorzyci wynikajce z wykorzystywania wzorców projektowych s niepodwaalne. Niestetynie wszyscy programici korzystaj z nich w trakcie projektowania i implementacji swoichrozwiza. Podstawowymi przy<strong>czy</strong>nami takiego stanu wydaj si by brak wiedzy na tematwzorców, długotrwały okres pełnego przyswojenia, tak aby móc za jego pomoc rozwizajaki problem oraz niekiedy niech do „odgórnego narzucenia” sposobu rozwizaniaproblemu.W Javie wzorce projektowe mona spotka na kadym kroku. Dla przykładu, biblioteka JavaFundation Classes (JFC), która od pewnego czasu jest zawarta w podstawowym API,wykorzystuje kilka popularnych wzorców projektowych. Realizacja graficznego interfejsuuytkownika z wykorzystaniem biblioteki JFC w pewien sposób pomaga przyswoi wzorceprojektowe.W rozwizaniach J2EE uywanie wzorców projektowych jest wrcz koniecznoci zewzgldu na ich złoono i liczb osób uczestniczcych w projektach. Z pomoc przychodzinam w tym przypadku firma Sun, która stara si opracowa i upowszechni jak najwikszilo wzorców projektowych J2EE.LITERATURA[1] Alpert, Sherman, K. Brown, B. Woolf, The Design Patterns Smalltalk Companion,Addison-Wesley Pub Co, 1998[2] Pree, Wolfgang, Design Patterns for Object-Oriented Software Development, Addison-Wesley Pub Co, 1994[3] Coplien, Schmidt, Patterns Languages of Program Design, Addison-Wesley Pub Co,1995[4] Buschman, Meunier, Pattern Oriented Software Architecture, New York, John Wileyand Sons, 1996[4] E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elements of ReusableObject-Oriented Software, Addison-Wesley Pub Co, 1995177

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!