Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00201 010852 10754778 na godz. na dobę w sumie
Java. Wzorce projektowe - książka
Java. Wzorce projektowe - książka
Autor: Liczba stron: 304
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-529-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> java - programowanie
Porównaj ceny (książka, ebook, audiobook).

Jest to praktyczna książka, która mówi o tym jak pisać programy w języku Java z użyciem standardowych wzorców projektowych. Książka składa się z serii krótkich rozdziałów, z których każdy opisuje jeden wzorzec i zawiera przynajmniej jeden wizualny, kompletny i działający przykładowy program. Każdy rozdział zawiera również diagramy UML pokazujące zależności występujące pomiędzy klasami programu.

Podczas lektury niniejszej książki czytelnik dowie się, że wzorce projektowe są powszechnie stosowanym sposobem organizacji obiektów w programach. Dzięki wykorzystaniu wzorców łatwiej jest pisać programy i później je modyfikować. Zapoznanie się z wzorcami pozwoli zdobyć słownictwo i zestaw pojęć, za pomocą których można łatwiej opisać konstrukcję swoich programów.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Java. Wzorce projektowe Autor: James William Cooper T‡umaczenie: Piotr Badarycz ISBN: 83-7197-529-5 Tytu‡ orygina‡u: Format: B5, stron: oko‡o 400 Java Design Patterns Jest to praktyczna ksi„¿ka, kt(cid:243)ra m(cid:243)wi o tym jak pisa(cid:230) programy w jŒzyku Java z(cid:160) u¿yciem standardowych wzorc(cid:243)w projektowych. Ksi„¿ka sk‡ada siŒ z serii kr(cid:243)tkich rozdzia‡(cid:243)w, z kt(cid:243)rych ka¿dy opisuje jeden wzorzec i zawiera przynajmniej jeden wizualny, kompletny i dzia‡aj„cy przyk‡adowy program. Ka¿dy rozdzia‡ zawiera r(cid:243)wnie¿ diagramy UML pokazuj„ce zale¿no(cid:156)ci wystŒpuj„ce pomiŒdzy klasami programu. Podczas lektury niniejszej ksi„¿ki czytelnik dowie siŒ, ¿e wzorce projektowe s„ powszechnie stosowanym sposobem organizacji obiekt(cid:243)w w programach. DziŒki wykorzystaniu wzorc(cid:243)w ‡atwiej jest pisa(cid:230) programy i p(cid:243)(cid:159)niej je modyfikowa(cid:230). Zapoznanie siŒ z wzorcami pozwoli zdoby(cid:230) s‡ownictwo i zestaw pojŒ(cid:230), za pomoc„ kt(cid:243)rych mo¿na ‡atwiej opisa(cid:230) konstrukcjŒ swoich program(cid:243)w. IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TRE(cid:140)CI SPIS TRE(cid:140)CI KATALOG KSI¥flEK KATALOG KSI¥flEK KATALOG ONLINE KATALOG ONLINE ZAM(cid:211)W DRUKOWANY KATALOG ZAM(cid:211)W DRUKOWANY KATALOG TW(cid:211)J KOSZYK TW(cid:211)J KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAM(cid:211)W INFORMACJE ZAM(cid:211)W INFORMACJE O NOWO(cid:140)CIACH O NOWO(cid:140)CIACH ZAM(cid:211)W CENNIK ZAM(cid:211)W CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥flEK ONLINE FRAGMENTY KSI¥flEK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Przedmowa .....................................................................................9 Podzikowania ..............................................................................11 Czlć I Czym s wzorce projektowe? .......................................13 Rozdział 1. Wprowadzenie...............................................................................15 Definicja wzorca projektowego.....................................................................................17 Proces uczenia się..........................................................................................................18 Studiowanie wzorców projektowych ............................................................................19 Uwagi na temat projektowania zorientowanego obiektowo .........................................19 Klasy JFC ......................................................................................................................20 Wzorce projektowe w języku Java ................................................................................20 Rozdział 2. Diagramy UML ..............................................................................21 Dziedziczenie ................................................................................................................22 Interfejsy........................................................................................................................23 Kompozycja...................................................................................................................23 Adnotacje.......................................................................................................................24 JVISION ........................................................................................................................24 Visual SlickEdit.............................................................................................................24 Czlć II Wzorce konstrukcyjne..................................................25 Rozdział 3. Rozdział 4. Factory (fabryka) ..........................................................................27 Jak działa fabryka ..........................................................................................................27 Przykładowy kod ...........................................................................................................28 Teraz dwie klasy pochodne ...........................................................................................28 Tworzenie Simple Factory ............................................................................................29 Wzorzec Factory w obliczeniach matematycznych ......................................................30 Zagadnienia do przemyślenia ........................................................................................31 Factory Method (metoda fabrykujca) ...........................................33 Klasa Swimmer .............................................................................................................35 Klasa Event....................................................................................................................35 Rozstawienie bezpośrednie ...........................................................................................36 Program rozstawiający ..................................................................................................38 Inne fabryki ...................................................................................................................38 Kiedy używać Factory Method .....................................................................................38 Zagadnienia do przemyślenia ........................................................................................39 T:\Andrzej\Java. Wzorce\!Spis treści.doc 3 4 Rozdział 5. Rozdział 6. Rozdział 7. Rozdział 8. Java. Wzorce projektowe Abstract Factory (fabryka abstrakcji).............................................41 Abstract Factory w projektowaniu ogrodów .................................................................42 Jak działa interfejs użytkownika ...................................................................................43 Dodawanie nowych klas................................................................................................44 Konsekwencje stosowania wzorca Abstract Factory ....................................................45 Zagadnienia do przemyślenia ........................................................................................45 Singleton ......................................................................................47 Tworzymy Singleton używając metody statycznej .......................................................47 Wyjątek..........................................................................................................................48 Zgłaszanie wyjątku ........................................................................................................48 Tworzenie instancji klasy ..............................................................................................49 Dostarczenie globalnego punktu dostępu dla wzorca Singleton ...................................49 Pakiet javax.comm jako przykład użycia wzorca Singleton .........................................50 Konsekwencje stosowania wzorca Singleton ................................................................53 Zagadnienia do przemyślenia ........................................................................................53 Builder (budowniczy) .....................................................................55 Program do śledzenia inwestycji ...................................................................................56 Nazywanie budowniczych.............................................................................................57 Budowniczy listy wyboru..............................................................................................59 Budowniczy pól wyboru................................................................................................60 Konsekwencje stosowania wzorca Builder ...................................................................61 Zagadnienia do przemyślenia ........................................................................................61 Prototype (prototyp)......................................................................63 Klonowanie obiektów w języku Java ............................................................................64 Używanie prototypu ......................................................................................................64 Stosowanie wzorca Prototypu .......................................................................................66 Menedżer prototypów....................................................................................................69 Klonowanie z wykorzystaniem serializacji ...................................................................69 Konsekwencje stosowania wzorca Prototypu ...............................................................70 Zagadnienia do przemyślenia ........................................................................................71 Podsumowanie wzorców konstrukcyjnych ...................................................................71 Czlć III Wzorce strukturalne.....................................................73 Rozdział 9. Adapter ........................................................................................75 Przenoszenie danych pomiędzy listami.........................................................................75 Korzystanie z klasy JList z biblioteki JFC ....................................................................76 Adaptery uniwersalne ....................................................................................................81 Adaptery dynamiczne ....................................................................................................81 Adaptery w języku Java.................................................................................................82 Zagadnienia do przemyślenia ........................................................................................83 Rozdział 10. Bridge (most) ...............................................................................85 Diagram klas..................................................................................................................87 Rozbudowa mostu .........................................................................................................87 Java Bean jako przykład wzorca Bridge .......................................................................89 Konsekwencje stosowania wzorca Bridge ....................................................................89 Zagadnienia do przemyślenia ........................................................................................90 Rozdział 11. Composite (kompozyt) ..................................................................91 Implementacja kompozytu ............................................................................................92 Obliczanie wynagrodzeń ...............................................................................................92 4 T:\Andrzej\Java. Wzorce\!Spis treści.doc Spis treści 5 Klasa Employee.............................................................................................................93 Klasa Boss .....................................................................................................................94 Tworzenie drzewa pracowników...................................................................................96 Awans ............................................................................................................................97 Lista dwukierunkowa ....................................................................................................97 Konsekwencje stosowania wzorca Composite ..............................................................98 Prosty Composite...........................................................................................................98 Kompozyty w Javie .......................................................................................................99 Inne kwestie dotyczące implementacji ..........................................................................99 Zagadnienia do przemyślenia ........................................................................................99 Rozdział 12. Decorator (dekorator) .................................................................101 Dekorowanie przycisku ...............................................................................................101 Użycie dekoratora........................................................................................................103 Diagram klas................................................................................................................104 Dekorowanie obwódek w Javie...................................................................................105 Dekoratory niewizualne...............................................................................................106 Dekoratory, adaptery i kompozyty ..............................................................................108 Konsekwencje stosowania wzorca Dekoratora ...........................................................108 Zagadnienia do przemyślenia ......................................................................................109 Rozdział 13. Facade (fasada) ..........................................................................111 Tworzenie klas fasady .................................................................................................112 Konsekwencje stosowania wzorca Facade ..................................................................115 Uwagi dotyczące instalacji i uruchamiania programu dbFrame .................................115 Zagadnienia do przemyślenia ......................................................................................116 Rozdział 14. Flyweight (waga piórkowa)..........................................................117 Omówienie ..................................................................................................................118 Przykładowy kod .........................................................................................................118 Wzorce Flyweight w Javie ..........................................................................................122 Współdzielone obiekty ................................................................................................122 Obiekty „kopiowane podczas zapisu” .........................................................................123 Zagadnienia do przemyślenia ......................................................................................123 Rozdział 15. Proxy (polrednik)........................................................................125 Przykładowy kod .........................................................................................................126 Kopiowanie podczas zapisu ........................................................................................128 Enterprise Java Beans..................................................................................................128 Porównanie z innymi wzorcami ..................................................................................128 Zagadnienia do przemyślenia ......................................................................................128 Podsumowanie wzorców strukturalnych .....................................................................128 Czlć IV Wzorce czynnolciowe ................................................131 Rozdział 16. Chain of Responsibility (ła8cuch odpowiedzialnolci).....................133 Zastosowania ...............................................................................................................134 Przykładowy kod .........................................................................................................134 Wizualne komponenty pola listy .................................................................................137 Implementacja systemu pomocy .................................................................................139 Łańcuch czy drzewo? ..................................................................................................142 Rodzaje żądań..............................................................................................................143 Przykłady w Javie........................................................................................................143 Konsekwencje stosowania wzorca Chain of Responsibility .......................................143 Zagadnienia do przemyślenia ......................................................................................144 T:\Andrzej\Java. Wzorce\!Spis treści.doc 5 6 Java. Wzorce projektowe Rozdział 17. Command (polecenie) .................................................................145 Motywacja ...................................................................................................................145 Obiekt polecenia ..........................................................................................................146 Używanie obiektów polecenia.....................................................................................147 Wzorzec Command .....................................................................................................148 Wzorzec Command w języku Java..............................................................................150 Konsekwencje stosowania wzorca Command.............................................................151 Wycofywanie operacji.................................................................................................152 Zagadnienia do przemyślenia ......................................................................................155 Rozdział 18. Rozdział 19. Interpreter ..................................................................................157 Motywacja ...................................................................................................................157 Zastosowania ...............................................................................................................157 Prosty przykład raportowania......................................................................................158 Interpretowanie języka ................................................................................................159 Obiekty używane podczas parsowania ........................................................................160 Redukowanie parsowanego stosu................................................................................162 Implementowanie wzorca Interpretera ........................................................................163 Konsekwencje stosowania wzorca Interpretera...........................................................166 Zagadnienia do przemyślenia ......................................................................................167 Iterator .......................................................................................169 Motywacja ...................................................................................................................169 Wyliczenia w Javie......................................................................................................170 Przykładowy kod .........................................................................................................170 Iteratory filtrowane ......................................................................................................171 Konsekwencje stosowania wzorca Iteratora................................................................173 Iteratory i kompozyty ..................................................................................................174 Iteratory w Javie 1.2 ....................................................................................................174 Zagadnienia do przemyślenia ......................................................................................174 Rozdział 20. Mediator.....................................................................................175 Przykładowy system....................................................................................................175 Interakcje pomiędzy komponentami ...........................................................................176 Przykładowy kod .........................................................................................................177 Mediatorzy i obiekty poleceń ......................................................................................180 Konsekwencje stosowania wzorca Mediatora.............................................................180 Mediator z pojedynczym interfejsem ..........................................................................181 Kwestie implementacyjne ...........................................................................................181 Rozdział 21. Memento ....................................................................................183 Motywacja ...................................................................................................................183 Implementacja .............................................................................................................184 Przykładowy kod .........................................................................................................184 Konsekwencje stosowania wzorca Memento ..............................................................188 Zagadnienia do przemyślenia ......................................................................................188 Rozdział 22. Observer (obserwator) .................................................................189 Obserwowanie zmian kolorów ....................................................................................190 Inne rodzaje komunikatów ..........................................................................................193 Klasa JList jako obserwator.........................................................................................193 Architektura model-widok-kontroler jako wzorzec Observer.....................................194 Interfejs Observer i klasa Observable..........................................................................195 Konsekwencje stosowania wzorca Observer...............................................................195 Zagadnienia do przemyślenia ......................................................................................196 6 T:\Andrzej\Java. Wzorce\!Spis treści.doc Spis treści 7 Rozdział 23. State (stan) ................................................................................197 Przykładowy kod .........................................................................................................197 Przełączanie pomiędzy stanami...................................................................................201 Interakcje mediatora z klasą StateManager .................................................................202 Przejścia pomiędzy stanami ........................................................................................204 Mediator — „klasa Bóg” .............................................................................................204 Konsekwencje stosowania wzorca State .....................................................................204 Zagadnienia do przemyślenia ......................................................................................205 Rozdział 24. Strategy (strategia) ....................................................................207 Motywacja ...................................................................................................................207 Przykładowy kod .........................................................................................................208 Klasa Context ..............................................................................................................209 Polecenia programu .....................................................................................................210 Strategia dla wykresu liniowego i wykresu słupkowego ............................................210 Rysowanie wykresów w Javie.....................................................................................211 Konsekwencje stosowania wzorca Strategy ................................................................213 Zagadnienia do przemyślenia ......................................................................................214 Rozdział 25. Template (szablon)......................................................................215 Motywacja ...................................................................................................................215 Rodzaje metod w klasach szablonowych ....................................................................216 Wzorce metod szablonowych w Javie.........................................................................217 Przykładowy kod .........................................................................................................217 Szablony i wywołania zwrotne....................................................................................221 Konsekwencje stosowania wzorca Template ..............................................................222 Zagadnienia do przemyślenia ......................................................................................222 Rozdział 26. Visitor (wizytator) .......................................................................223 Motywacja ...................................................................................................................223 Kiedy używać wzorca Visitor .....................................................................................224 Przykładowy kod .........................................................................................................225 Wizytowanie klas ........................................................................................................226 Wizytowanie wielu klas ..............................................................................................227 Kierownicy są również pracownikami ........................................................................228 Operacje wizytatora wyłapujące wszystkie klasy .......................................................229 Podwójne wywołania...................................................................................................230 Przemierzanie wielu klas .............................................................................................230 Konsekwencje stosowania wzorca Visitor ..................................................................230 Zagadnienia do przemyślenia ......................................................................................231 Czlć V Wzorce projektowe i Java Foundation Classes ............233 Rozdział 27. JFC czyli Swing ...........................................................................235 Instalacja i korzystanie z klas Swing...........................................................................235 Koncepcje, na których oparta jest biblioteka Swing ...................................................236 Hierarchia klas Swing..................................................................................................236 Rozdział 28. Pisanie prostego programu z wykorzystaniem JFC ........................237 Ustawianie definicji wyglądu i zachowania ................................................................237 Obsługa zdarzenia zamknięcia okna ...........................................................................238 Klasa JxFrame .............................................................................................................238 Prosty program z dwoma przyciskami ........................................................................239 Więcej o klasie JButton ...............................................................................................240 T:\Andrzej\Java. Wzorce\!Spis treści.doc 7 8 Java. Wzorce projektowe Rozdział 29. Przyciski radiowe i paski narzdziowe ..........................................241 Przyciski radiowe ........................................................................................................241 Klasa JToolBar ............................................................................................................242 JToggleButton .............................................................................................................242 Przykładowy program z różnymi przyciskami............................................................243 Rozdział 30. Komponenty menu i obiekty akcji ................................................245 Obiekty akcji ...............................................................................................................245 Wzorce projektowe i obiekty akcji..............................................................................248 Rozdział 31. Klasa JList ..................................................................................249 Zaznaczanie elementów listy i zdarzenia ....................................................................250 Dynamiczna zmiana wyświetlanej zawartości listy ....................................................250 Posortowana lista wykorzystująca komponent JList i obiekt ListModel ....................252 Sortowanie bardziej skomplikowanych obiektów.......................................................253 Otrzymywanie klucza bazy danych.............................................................................255 Dodawanie ikon do komponentu JList ........................................................................256 Rozdział 32. Klasa JTable ...............................................................................259 Prosty program z komponentem JTable ......................................................................259 Interpretatory wyglądu komórek .................................................................................262 Interpretacja innych klas..............................................................................................263 Zaznaczanie komórek tabeli ........................................................................................265 Wzorce użyte w powyższym przykładzie ...................................................................266 Rozdział 33. Klasa JTree .................................................................................269 Interfejs TreeModel .....................................................................................................270 Podsumowanie.............................................................................................................271 Czlć VI Studium przypadków ..................................................273 Rozdział 34. Sandy i mediator .........................................................................275 Rozdział 35. Problemy Herba z przetwarzaniem tekstu .....................................279 Rozdział 36. Dylemat Mary .............................................................................281 Dodatki .......................................................................................283 Bibliografia .................................................................................285 Skorowidz ...................................................................................287 8 T:\Andrzej\Java. Wzorce\!Spis treści.doc Rozdział 13. W niniejszym rozdziale będziemy zajmować się wzorcem Facade. Wzorzec ten jest uży- wany do obudowywania zbioru złożonych klas i dostarcza dla nich prostszego interfejsu. Często program podczas tworzenia ewoluuje i rośnie stopień jego komplikacji. Zachwy- cając się korzyściami płynącymi ze stosowania wzorców projektowych, zauważamy też ich ujemną cechę: czasami generują one bardzo wiele dodatkowych klas, przez co trudniej jest zrozumieć działanie programu. Poza tym programy często składają się z szeregu podsystemów, z których każdy posiada swój własny skomplikowany interfejs. Fasada pozwala uprościć tę złożoność dostarczając uproszczonego interfejsu do tych podsystemów. Takie uproszczenie może czasami zmniejszyć elastyczność przykrywa- nych klas, lecz często dostarcza wszystkich funkcji niezbędnych każdemu użytkowni- kowi. Oczywiście przykrywane klasy i ich metody mogą być w dalszym ciągu dostępne. Na szczęście, aby przedstawić przykład zastosowania wzorca Facade, nie będziemy musieli tworzyć złożonego systemu. Java dostarcza zbioru klas, które pozwalają na łączenie się z bazami danych poprzez interfejs zwany JDBC. Można połączyć się z każdą bazą danych, dla której producent dostarczył sterownik JDBC (odpowiedni zestaw klas), czyli z prawie każdą bazą danych dostępną na rynku. Niektóre bazy da- nych pozwalają na połączenie bezpośrednie, do innych dostęp jest zapewniony po- przez klasę mostu JDBC-ODBC. Klasy obsługujące bazy danych z pakietu java.sql stanowią doskonały przykład niskopo- ziomowych klas, które komunikują się ze sobą w bardzo zawiły sposób (rysunek 13.1). Rysunek 13.1. Zarys interakcji pomiędzy klasami pakietu java.sql.*, używanych do połączeń z bazą danych T:\Andrzej\Java. Wzorce\12-93.doc 111 112 Część III  Wzorce strukturalne Do połączenia z bazą danych wykorzystywana jest instancja klasy 322/-832. Do określania nazw tabel bazy danych i ich pól korzysta się z klasy +8+,+7//8+.+8+ poprzez klasę 322/-832. Do konstruowania zapytań w języku SQL, czyli obiektu typu String, wykorzystuje się klasę #8+8//28. Poprzez wykonanie zapytania (klasa #8+8//28) otrzymuje się wynik — obiekt klasy /798#/8. Do określenia nazw ko- lumn trzeba jeszcze uzyskać instancję klasy /798#/8/8+.+8+. Operowanie wszyst- kimi tymi klasami może być bardzo trudne, większość wywołań może zwracać wy- jątki, przez co kod jest bardzo zagmatwany. Poprzez zbudowanie fasady składającej się z klasy +8+,+7/ i klasy /7987, możemy zbudować łatwiejszy w użyciu system. Rysunek 13.2. Fasada zakrywająca wiele klas pakietu java.sql.* Tworzenie klas fasady Przyjrzyjmy się, jak nawiązuje się połączenie z bazą danych. Najpierw trzeba zała- dować sterownik bazy danych. 86 +77 036+/(cid:16).6:/6(cid:20) 3+.8/6.1/.6:/6  -+8-(cid:16)-/4832/(cid:20) #78/ 398 46282(cid:16)/ 1/8/77+1/(cid:16)(cid:20)(cid:20)  Następnie używamy klasy 322/-832 do łączenia się z bazą danych. Pobieramy rów- nież metadane, aby dowiedzieć się więcej o bazie danych. 86 -326:/6+2+1/6 1/8322/-832(cid:16)96(cid:20) .+-32 1/8/8++8+(cid:16)(cid:20) 1/88//8+.+8+ -+8-(cid:16)-/4832/(cid:20) #78/ 398 46282(cid:16)/ 1/8/77+1/(cid:16)(cid:20)(cid:20)  Jeśli chcemy sporządzić listę wszystkich nazw tabel bazy danych, musimy wywołać metodę 1/8$+,/7 klasy /8+.+8+, która zwróci obiekt /798#/8. Aby uzyskać listę nazw musimy przejść przez wszystkie elementy tego obiektu, i wyłuskać tylko tabele użytkownika, odrzucając tabele systemowe. 112 T:\Andrzej\Java. Wzorce\12-93.doc Rozdział 13.  Facade (fasada) 113 /-83682+/2/; /-836(cid:16)(cid:20)  +..8/8+,/2+/783+ /-836  72-/;/.32823;3;+28/6/+6/ 86 6/79872/; /7987(cid:16).+ 1/8$+,/7(cid:16)-+8+31,29,,84/7(cid:20)(cid:20) -+8-(cid:16)-/4832/(cid:20) #78/ 398 46282(cid:16)/(cid:20)  ;/(cid:16)6/7987 +736///287(cid:16)(cid:20)(cid:20) 82+/ +..//28(cid:16)6/7987 1/8392 +9/(cid:16)$)(cid:20)(cid:20) Jak widać, już teraz bardzo trudno jest tym wszystkim zarządzać, a nie wykonaliśmy nawet jeszcze żadnego zapytania. Możemy przyjąć pewne założenie upraszczające: wyjątki, które są zgłaszane przez metody klas nie wymagają skomplikowanej obsługi. W przeważającej części metody będą pracowały bezbłędnie, dopóki prawidłowo będzie działać połączenie sieciowe z serwerem bazy danych. Więc możemy obudować wszystkie te metody, tak by błę- dy, które wystąpią były wypisywane bez podejmowania żadnych dodatkowych akcji. Możliwe jest teraz napisanie prostych klas zawierających wszystkie ważne metody klas 322/-832, /798#/8, #8+8//28 i /8++8+. Tak będą wyglądały metody klasy +8+,+7/: -+77+8+,+7/ 49,-+8+,+7/(cid:16)#8621.6:/6(cid:20) -327869-836 49,-:3.4/2(cid:16)#862196,#8621-+8(cid:20) 49,-#86211/8$+,/+/7(cid:16)(cid:20) 49,-#86211/8392+/7(cid:16)#86218+,/(cid:20) 49,-#86211/8392 +9/(cid:16)#86218+,/, #8621-392+/(cid:20) 49,-#86211/8/8 +9/(cid:16)#8621-392+/(cid:20) 49,- /798#/8/-98/(cid:16)#862175(cid:20)  A tak, metody klasy Results. -+77 /7987 49,- /7987(cid:16) /798#/867/8(cid:20) -327869-836 49,-#86211/8/8++8+(cid:16)(cid:20) 49,-,33/+2+736///287(cid:16)(cid:20) 49,-#86212/8//28(cid:16)(cid:20) 49,-#86211/8392 +9/(cid:16)#8621-392+/(cid:20) 49,-#86211/8392 +9/(cid:16)28(cid:20)  Te proste klasy pozwalają nam napisać program otwierający połączenie z bazą da- nych i wyświetlający nazwy jej tabel, kolumn i zawartość. Program umożliwia rów- nież wykonanie prostego zapytania SQL. Nasz przykładowy program wykorzystujący fasadę daje dostęp do bazy danych za- wierającej ceny żywności w trzech okolicznych supermarketach. T:\Andrzej\Java. Wzorce\12-93.doc 113 114 Część III  Wzorce strukturalne Rysunek 13.3. Program dbFrame pokazuje dostęp do nazw tabel, kolumn i ich zawartości Kliknięcie nazwy tabeli wyświetli nazwy kolumn tej tabeli, a kliknięcie nazwy ko- lumny wyświetli zawartość tej kolumny. Naciśnięcie przycisku „Run Query” wy- świetli posortowane ceny pomarańczy we wszystkich supermarketach (rysunek 13.4). Rysunek 13.4. Wynik zapytania wykonanego przez program dbFrame Po uruchomieniu program łączy się z bazą danych i pobiera listę tabel. .,2/;+8+,+7/(cid:16)792 .,- 3.,- .,-.,-6:/6(cid:20) ., 4/2(cid:16).,-3.,-63-/646-/7,29(cid:20) #862182+/7., 1/8$+,/+/7(cid:16)(cid:20) 3+.78(cid:16)$+,/7,82+/7(cid:20) Kliknięcie w obszarze listy powoduje wykonanie zapytania dla nazw kolumn lub za- wartości. 49,-:3.8/#8+8/+21/.(cid:16)8/:/28/(cid:20) ,/-83,/ 1/8#396-/(cid:16)(cid:20) 0(cid:16)3,$+,/7(cid:20) 73;3927(cid:16)(cid:20) 0(cid:16)3,3927(cid:20) 73;+8+(cid:16)(cid:20)   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 46:+8/:3.73;3927(cid:16)(cid:20) #8621-2+/7., 1/8392+/7(cid:16)$+,/7 1/8#//-8/.8/(cid:16)(cid:20)(cid:20) 3+.78(cid:16)3927,-2+/7(cid:20)  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 46:+8/:3.73;+8+(cid:16)(cid:20) #8621-32+/3927 1/8#//-8/.8/(cid:16)(cid:20) #8621-3:+., 1/8392 +9/(cid:16)$+,/7 1/8#//-8/.8/(cid:16)(cid:20),-32+/(cid:20) +8+ 7/8 7,/(cid:16)0+7/(cid:20) +8+ 6/3:/(cid:16)(cid:20) +8+ 7/8 7,/(cid:16)869/(cid:20) 114 T:\Andrzej\Java. Wzorce\12-93.doc Rozdział 13.  Facade (fasada) 115 -3:+., 1/8/8 +9/(cid:16)3927 1/8#//-8/.8/(cid:16)(cid:20)(cid:20) ;/(cid:16)-3:+ /218(cid:16)(cid:20) (cid:20) +8+ +..(cid:16)-3:+(cid:20) ;+6837-., 1/8/8 +9/(cid:16)3927 1/8#//-8/.8/(cid:16)(cid:20)(cid:20)   Diagram przedstawia kompletną prezentację klas fasady. Rysunek 13.5. Klasy fasady, z których może korzystać użytkownik Zauważmy, że klasa +8+,+7/ zawiera instancję klasy 322/-832, +8++7//8++8+ i /7987. Z kolei klasa /7987zawiera instancje klas /798#/8 i /798#/8/8++8+. Konsekwencje stosowania wzorca Facade Wzorzec Facade izoluje klienta od skomplikowanych komponentów podsystemów i dostarcza do nich prostszy interfejs do ogólnego użytku. Jednak nie ogranicza za- awansowanemu użytkownikowi dostępu do złożonych klas znajdujących się głębiej. Dodatkowo Facade umożliwia dokonywanie zmian w przykrywanych podsystemach bez potrzeby modyfikacji kodu klienta i redukuje liczbę zależności podczas kompilacji. Uwagi dotyczce instalacji i uruchamiania programu dbFrame Aby umożliwić komunikację z bazą danych, należy zainstalować sterowniki ODBC i JDBC-ODBC dla Javy. Ten przykładowy program będzie działał tylko w środowi- sku Windows, ponieważ wymaga bazy danych Microsoft Access — pliku groce- ries.mdb. Sterownik JDBC-ODBC jest wbudowany w Javę 2 (wersja 1.2 lub wyższa). Gdy używa się wersji wcześniejszych, należy zaopatrzyć się w ten sterownik. Jest do- stępny na stronie WWW: java.sun.com. T:\Andrzej\Java. Wzorce\12-93.doc 115 116 Część III  Wzorce strukturalne Sterownik ODBC Data Access jest dostępny na stronach firmy Microsoft. Po zain- stalowaniu pojawi się folder ODBC w panelu sterowania. Program z foldera Facade, który znajduje się na serwerze ftp wydawnictwa Helion (ftp://ftp.helion.pl/przyklady/javawz.zip), należy przekopiować na twardy dysk. Na- stępnie należy uruchomić program ODBC z panelu sterowania i zarejestrować plik groceries.mdb, nacisnąć przycisk „Add” i wypełnić panel jak pokazano to na rysunku 13.6. Aby ustawić lokalizację pliku groceries.mdb należy nacisnąć „Select” i wskazać na plik w katalogu, do którego został wkopiowany. Rysunek 13.6. Sposób skonfigurowania dostępu ODBC/JDBC do przykładowej bazy danych Jeśli źródło danych zostanie nazwane inaczej niż „Grocery Prices”, trzeba będzie zmienić 20. linię w programie dbFrame.java. Zagadnienia do przemyllenia 1. Przypuśćmy, że mamy napisany program z polem menu File/Open i przyciskami pozwalającymi kontrolować rodzaj czcionki (pogrubiona i kursywa). Teraz przypuśćmy, że potrzebujemy, aby program dało się uruchamiać z linii komend przez podanie argumentów. Proszę zastanowić się, jak można wykorzystać wzorzec Facade, aby to osiągnąć. 116 T:\Andrzej\Java. Wzorce\12-93.doc
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Java. Wzorce projektowe
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: