Java. Wzorce projektowe

Podobne dokumenty
Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Wprowadzenie do programowania aplikacji mobilnych

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

Wzorce projektowe. dr inż. Marcin Pietroo

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Programowanie obiektowe

Zaawansowane programowanie w C++ (PCP)

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Testowanie oprogramowania Wzorce projektowe

Technologia Programowania 2016/2017 Wykład 4

Zaawansowane programowanie obiektowe - wykład 5

Projektowanie obiektowe Wzorce projektowe

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Wzorce projektowe Michał Węgorek

OpenOffice.ux.pl 2.0. Æwiczenia praktyczne

Smarty PHP. Leksykon kieszonkowy

Wzorce projektowe / Eric Freeman [et al.]. Gliwice, cop Spis treści

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Wzorce projektowe. dr inż. Marcin Pietroo

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności

Wzorce projektowe i refaktoryzacja

problem w określonym kontekście siły istotę jego rozwiązania

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

Matematyka z komputerem dla gimnazjum

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

Programowanie w języku Java WYKŁAD

1) Wzorzec projektowy Adapter. Zastosowanie:

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Technologia Programowania 2016/2017 Wykład 5

MySQL. Æwiczenia praktyczne

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

P³atnik. Przewodnik IDZ DO KATALOG KSI EK TWÓJ KOSZYK CENNIK I INFORMACJE CZYTELNIA PRZYK ADOWY ROZDZIA SPIS TREŒCI KATALOG ONLINE

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

5.2. Pierwsze kroki z bazami danych

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Windows XP PL. Kurs. Autor: Maria Sokó³ ISBN: Format: B5, stron: 352 Zawiera CD-ROM

Kancelaria instalacja programu

5. Bazy danych Base Okno bazy danych

Programowanie MorphX Ax

Wprowadzenie (17) Część I. Makra w Excelu - podstawy (23)

Wypożyczalnia VIDEO. Technologie obiektowe

Instalowanie dodatku Message Broadcasting

Program szkolenia: Wzorce projektowe w C++

Programowanie Zespołowe

AutoCAD Pierwsze kroki

dziennik Instrukcja obsługi

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

1 Wprowadzenie do koncepcji Microsoft Office BI 1 Zakres ksiąŝki 2 Cel ksiąŝki 3 Wprowadzenie do tematu 3 Zawartość rozdziałów 4

16) Wprowadzenie do raportowania Rave

Informatyka Europejczyka. Zeszyt æwiczeñ dla szko³y podstawowej. Czêœæ II

Wzorce projektowe. dr inż. Marcin Pietroo

MS Excell 2007 Kurs podstawowy Filtrowanie raportu tabeli przestawnej

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Wprowadzenie do projektu QualitySpy

Wzorce projektowe [ wstęp ]

Wprowadzenie do Doctrine ORM

MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści

Windows XP Professional XP. Æwiczenia praktyczne

Programowanie Obiektowe GUI

Microsoft Excel 2003 profesjonalna analiza i raportowanie oraz prezentacja danych

Mandrake Linux. Æwiczenia zaawansowane IDZ DO KATALOG KSI EK TWÓJ KOSZYK CENNIK I INFORMACJE CZYTELNIA PRZYK ADOWY ROZDZIA SPIS TRE CI KATALOG ONLINE

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

IBM SPSS Statistics Wersja 23. Konfigurowanie ułatwień dostępu

Programowanie obiektowe

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wyniki operacji w programie

UML [ Unified Modeling Language ]

Instrukcja użytkowania

Problemy techniczne SQL Server

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Tworzenie prezentacji w MS PowerPoint

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

SSI Katalog. Program do katalogowania zawartości dysków. Dariusz Kalinowski

Język Java część 2 (przykładowa aplikacja)

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

Sylabus Moduł 4: Grafika menedżerska i prezentacyjna

Jak utworzyć diagram

Memeo Instant Backup Podręcznik Szybkiego Startu

Kwerenda. parametryczna, z polem wyliczeniowym, krzyżowa

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

AutoCAD Pierwsze kroki

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Instrukcja instalacji Asystenta Hotline

5.4. Tworzymy formularze

INSTRUKCJA OBSŁUGI ⓫ Dodatki

LABORATORIUM 6: ARKUSZ MS EXCEL JAKO BAZA DANYCH

Forum Client - Spring in Swing

Transkrypt:

IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK SPIS TREŒCI KATALOG ONLINE DODAJ DO KOSZYKA CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOŒCIACH ZAMÓW CENNIK Java. Wzorce projektowe Autor: James William Cooper T³umaczenie: Piotr Badarycz ISBN: 83-7197-529-5 Tytu³ orygina³u: Java Design Patterns Format: B5, stron: oko³o 400 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. CZYTELNIA FRAGMENTY KSI EK 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. 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 Rozdział 4. 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 Java. Wzorce projektowe Rozdział 5. 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 Rozdział 6. 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 Rozdział 7. 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 Rozdział 8. Czlć III 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 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 (łacuch 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. 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 Rozdział 19. 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żywany 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. Zachwycają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ść przykrywanych klas, lecz często dostarcza wszystkich funkcji niezbędnych każdemu użytkownikowi. 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 danych pozwalają na połączenie bezpośrednie, do innych dostęp jest zapewniony poprzez klasę mostu JDBC-ODBC. Klasy obsługujące bazy danych z pakietu java.sql stanowią doskonały przykład niskopoziomowych 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 kolumn trzeba jeszcze uzyskać instancję klasy "/798#/8/8+.+8+. Operowanie wszystkimi tymi klasami może być bardzo trudne, większość wywołań może zwracać wyją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ładować sterownik bazy danych. 86 +77036+/.6:/63+.8/6.1/.6:/6 -+8--/4832/ #78/39846282/1/8/77+1/ Następnie używamy klasy 322/-832 do łączenia się z bazą danych. Pobieramy również metadane, aby dowiedzieć się więcej o bazie danych. 86-326:/6+2+1/61/8322/-83296.+-321/8/8++8+1/88//8+.+8+ -+8--/4832/ #78/39846282/1/8/77+1/ 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 +..8/8+,/2+/783+&/-836 72-/;/.32823;3;+28/6/+6/ 86 6/79872/;"/7987.+1/8$+,/7-+8+31Г29ГГ84/7 -+8--/4832/ #78/39846282/ ;/6/7987+736///287 82+/+..//286/79871/8392&+9/$) 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/#8621.6:/6-327869-836 49,-:3.4/2#862196Г#8621-+8 49,-#86211/8$+,/+/7 49,-#86211/8392+/7#86218+,/ 49,-#86211/8392&+9/#86218+,/Г #8621-392+/ 49,-#86211/8/8&+9/#8621-392+/ 49,-"/798#/8/-98/#862175 A tak, metody klasy Results. -+77"/7987 49,-"/7987"/798#/867/8-327869-836 49,-#86211/8/8++8+ 49,-,33/+2+736///287 49,-#86212/8//28 49,-#86211/8392&+9/#8621-392+/ 49,-#86211/8392&+9/28 Te proste klasy pozwalają nam napisać program otwierający połączenie z bazą danych i wyświetlający nazwy jej tabel, kolumn i zawartość. Program umożliwia również wykonanie prostego zapytania SQL. Nasz przykładowy program wykorzystujący fasadę daje dostęp do bazy danych zawierają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 kolumny 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/792.,-3.,-.,-.,-6:/6.,4/2.,-3.,-63-/646-/7г29 #862182+/7.,1/8$+,/+/7 3+.78$+,/7Г82+/7 Kliknięcie w obszarze listy powoduje wykonanie zapytania dla nazw kolumn lub zawartości. 49,-:3.8/#8+8/+21/.8/:/28/,/-83,/1/8#396-/ 03,$+,/7 73;3927 03,3927 73;+8+ 46:+8/:3.73;3927 #8621-2+/7.,1/8392+/7$+,/71/8#//-8/.8/ 3+.783927Г-2+/7 46:+8/:3.73;+8+ #8621-32+/39271/8#//-8/.8/ #8621-3:+.,1/8392&+9/$+,/71/8#//-8/.8/Г-32+/ +8+7/8&7,/0+7/ +8+6/3:/ +8+7/8&7,/869/ 114 T:\Andrzej\Java. Wzorce\12-93.doc

Rozdział 13. Facade (fasada)115-3:+.,1/8/8&+9/39271/8#//-8/.8/ ;/-3:+/218 +8++..-3:+ ;+6837-.,1/8/8&+9/39271/8#//-8/.8/ 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 zaawansowanemu 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 środowisku Windows, ponieważ wymaga bazy danych Microsoft Access pliku groceries.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 dostę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 zainstalowaniu 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. Nastę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