Ruby Wzorce projektowe.pdf

(344 KB) Pobierz
Ruby. Wzorce projektowe
Ruby. Wzorce projektowe
Autor: Russ Olsen
TĀumaczenie: MikoĀaj Szczepaniak
ISBN: 978-83-246-1688-6
TytuĀ oryginaĀu: Design Patterns in Ruby
Format: 172x245, stron: 370
Wydawnictwo Helion
ul. Koľciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Zwiķksz elastycznoľě swojego kodu dziķki wzorcom projektowym!
¤ Jak rozpoczĴě przygodķ z jķzykiem Ruby?
¤ Jak wykorzystaě drzemiĴce w nim moŃliwoľci?
¤ Jak zwiķkszyě elastycznoľě tworzonego kodu za pomocĴ wzorcw projektowych?
Stworzony w 1995 roku przez Yukihiro Matsumoto jķzyk Ruby dziķki swym unikalnym
moŃliwoľciom zdobywa serca programistw na caĀym ľwiecie. Cechy, ktre podbijajĴ
to nieufne ľrodowisko, to miķdzy innymi prosta skĀadnia z wbudowanymi w niĴ
wyraŃeniami regularnymi, automatyczne oczyszczanie pamiķci i wiele, wiele innych.
Ogromna i chķtna do pomocy spoĀecznoľě czyni to rozwiĴzanie jeszcze bardziej
atrakcyjnym. Ruby pozwala na korzystanie ze wzorcw projektowych Ï zbioru zasad
i reguĀ prowadzĴcych do celu w najlepszy, najszybszy i najbardziej elastyczny sposb.
Wzorce projektowe kojarzĴ siķ gĀwnie z jķzykami Java oraz C i C++. KsiĴŃka âRuby.
Wzorce projektoweÒ pokazuje, Ńe moŃna ich z powodzeniem uŃywaě rwnieŃ w jķzyku
Ruby. Dowiesz siķ z niej, w jaki sposb wykorzystaě znane wzorce, takie jak Observer,
Singleton czy teŃ Proxy. Autor przedstawi Ci rwnieŃ nowe wzorce, ktre ze wzglķdu
na cechy jķzyka Ruby mogĴ zostaě w nim zastosowane. Jednak zanim przejdziesz
do ich omawiania, Russ poprowadzi Ciķ przez podstawy programowania w tym jķzyku.
Nauczysz siķ uŃywaě miķdzy innymi pķtli, instrukcji warunkowych, wyraŃeĺ regularnych.
NiewĴtpliwie TwojĴ ciekawoľě wzbudzi tak zwany âduck typingÒ, ktry oczywiľcie takŃe
zostaĀ dokĀadnie tu omwiony. Russ Olsen dziķki swojemu wieloletniemu doľwiadczeniu
kaŃdy wzorzec ilustruje przykĀadem z Ńycia wziķtym. UĀatwi Ci to przyswojenie
i zastosowanie we wĀasnych projektach przedstawionych tu wzorcw.
¤ Podstawy programowania w jķzyku Ruby
¤ Zastosowanie wzorcw Ï takich jak Observer, Composite, Iterator, Command
i wiele innych
¤ Wykorzystanie technik metaprogramowania do tworzenia obiektw
niestandardowych
¤ Wykorzystanie wyraŃeĺ regularnych
¤ UŃycie jķzykw dziedzinowych
¤ Sposb instalacji jķzyka Ruby
Korzystaj z doľwiadczenia najlepszych programistw Ï uŃywaj
wzorcw projektowych w jķzyku Ruby!
319787343.001.png 319787343.002.png 319787343.003.png 319787343.004.png
S PIS TRECI
Sowo wstpne .................................................................................................. 15
Przedmowa ........................................................................................................ 19
Podzikowania .................................................................................................. 25
O autorze ............................................................................................................ 27
CZ I
WZORCE PROJEKTOWE I RUBY .................................................29
Rozdzia 1.
Budowa lepszych programów z wykorzystaniem
wzorców projektowych ................................................................................... 31
Banda Czworga ................................................................................................. 32
Wzorce dla wzorców ........................................................................................ 33
Oddzielaj elementy zmienne od elementów staych ...................... 33
Programuj pod ktem interfejsu, nie implementacji ....................... 34
Stosuj kompozycj zamiast dziedziczenia ........................................ 36
Deleguj, deleguj i jeszcze raz deleguj ................................................ 40
Czy dane rozwizanie rzeczywicie jest niezbdne ........................ 41
Czternacie z dwudziestu trzech .................................................................... 43
Wzorce projektowe w jzyku Ruby? ............................................................. 45
Rozdzia 2.
Pierwsze kroki w jzyku Ruby ...................................................................... 47
Interaktywny jzyk Ruby ................................................................................ 48
Przywitaj si ze wiatem .................................................................................. 48
Zmienne .............................................................................................................. 51
Typy Fixnum i Bignum .................................................................................... 52
Liczby zmiennoprzecinkowe .......................................................................... 53
W jzyku Ruby nie ma typów prostych ........................................................ 54
Kiedy brakuje obiektów… ............................................................................... 55
Prawda, fasz i nil .............................................................................................. 55
Decyzje, decyzje ................................................................................................ 57
Ptle ..................................................................................................................... 58
 
8 RUBY. WZORCE PROJEKTOWE
Wicej o acuchach .......................................................................................... 60
Symbole ............................................................................................................... 63
Tablice ................................................................................................................. 63
Tablice mieszajce ............................................................................................. 65
Wyraenia regularne ........................................................................................ 65
Nasza pierwsza klasa ........................................................................................ 66
Operacje na zmiennych egzemplarzy ........................................................... 68
Obiekt pyta: Kim jestem? ................................................................................. 70
Dziedziczenie, podklasy i nadklasy ............................................................... 71
Opcje argumentów ........................................................................................... 72
Moduy ................................................................................................................ 73
Wyjtki ................................................................................................................ 76
Wtki ................................................................................................................... 77
Zarzdzanie odrbnymi plikami z kodem ródowym .............................. 78
Podsumowanie .................................................................................................. 79
CZ II
WZORCE PROJEKTOWE W JZYKU RUBY ..................................81
Rozdzia 3.
Urozmaicanie algorytmów
za pomoc wzorca projektowego Template Method ................................. 83
Jak stawi czoo typowym problemom .......................................................... 84
Izolowanie elementów zachowujcych dotychczasow form ................ 85
Odkrywanie wzorca projektowego Template Method .............................. 88
Metody zaczepienia .......................................................................................... 89
Gdzie si waciwie podziay wszystkie te deklaracje? ............................... 92
Typy, bezpieczestwo i elastyczno ............................................................. 93
Testy jednostkowe nie maj charakteru opcjonalnego ............................... 95
Uywanie i naduywanie wzorca projektowego Template Method ....... 97
Szablony w praktycznych zastosowaniach ................................................... 98
Podsumowanie .................................................................................................. 99
Rozdzia 4.
Zastpowanie algorytmu strategi .............................................................. 101
Deleguj, deleguj i jeszcze raz deleguj .......................................................... 102
Wspódzielenie danych przez kontekst i strategi .................................... 104
Jeszcze raz o kaczym typowaniu .................................................................. 106
Obiekty Proc i bloki kodu .............................................................................. 107
Krótka analiza kilku prostych strategii ........................................................ 111
Uywanie i naduywanie wzorca projektowego Strategy ....................... 112
Wzorzec Strategy w praktycznych zastosowaniach .................................. 113
Podsumowanie ................................................................................................ 114
Rozdzia 5.
Jak by na bieco dziki wzorcowi Observer ......................................... 117
Trzymamy rk na pulsie .............................................................................. 117
Jak skuteczniej trzyma rk na pulsie? ...................................................... 119
Wyodrbnianie mechanizmu umoliwiajcego obserwacj .................... 122
Stosowanie bloków kodu w roli obserwatorów ......................................... 125
Odmiany wzorca projektowego Observer .............................................. 126
SPIS TRECI 9
Uywanie i naduywanie wzorca projektowego Observer ..................... 127
Wzorzec Observer w praktycznych zastosowaniach ................................ 129
Podsumowanie ................................................................................................ 130
Rozdzia 6.
Budowa wikszej caoci z czci za pomoc wzorca Composite ......... 133
Cao i czci ................................................................................................... 134
Tworzenie kompozytów ................................................................................ 136
Doskonalenie implementacji wzorca Composite
z wykorzystaniem operatorów .................................................................. 140
A moe tablica w roli kompozytu? ............................................................... 141
Kopotliwe rónice .......................................................................................... 141
Wskaniki w obie strony ................................................................................ 142
Uywanie i naduywanie wzorca projektowego Composite .................. 143
Kompozyty w praktycznych zastosowaniach ............................................ 145
Podsumowanie ................................................................................................ 147
Rozdzia 7.
Przeszukiwanie kolekcji z wykorzystaniem wzorca Iterator ................ 149
Iteratory zewntrzne ...................................................................................... 149
Iteratory wewntrzne ..................................................................................... 152
Iteratory wewntrzne kontra iteratory wewntrzne ................................ 153
Niezrównany modu Enumerable ................................................................ 154
Uywanie i naduywanie wzorca projektowego Iterator ........................ 156
Iteratory w praktycznych zastosowaniach ................................................. 158
Podsumowanie ................................................................................................ 161
Rozdzia 8.
Doprowadzanie spraw do koca za pomoc wzorca Command ........... 163
Eksplozja podklas ............................................................................................ 164
Prostsze rozwizanie ...................................................................................... 165
Stosowanie bloków kodu w roli polece ..................................................... 166
Rejestrowanie polece .................................................................................... 167
Wycofywanie operacji za pomoc wzorca Command .............................. 170
Kolejkowanie polece .................................................................................... 173
Uywanie i naduywanie wzorca projektowego Command .................. 174
Wzorzec projektowy Command w praktycznych zastosowaniach ........ 175
Migracje w ramach interfejsu ActiveRecord ................................... 175
Madeleine ............................................................................................. 176
Podsumowanie ................................................................................................ 179
Rozdzia 9.
Wypenianie luk z wykorzystaniem wzorca Adapter ............................. 181
Adaptery programowe ................................................................................... 182
Minimalne niedocignicia ............................................................................ 184
Czy alternatyw moe by adaptowanie istniejcych klas? ..................... 186
Modyfikowanie pojedynczych obiektów .................................................... 187
Adaptowa czy modyfikowa? ..................................................................... 188
Uywanie i naduywanie wzorca projektowego Adapter ....................... 190
Adaptery w praktycznych zastosowaniach ................................................ 190
Podsumowanie ................................................................................................ 191
10 RUBY. WZORCE PROJEKTOWE
Rozdzia 10.
Tworzenie zewntrznego reprezentanta naszego obiektu
z wykorzystaniem wzorca Proxy ................................................................. 193
Rozwizaniem s porednicy ........................................................................ 194
Porednik ochrony .......................................................................................... 196
Porednicy zdalni ............................................................................................ 197
Porednicy wirtualni jako rodek rozleniwiajcy ...................................... 198
Eliminacja najbardziej uciliwych
elementów implementacji poredników .................................................. 200
Metody i przekazywanie komunikatów ......................................... 201
Metoda method_missing ................................................................... 202
Wysyanie komunikatów ................................................................... 203
Bezbolesne implementowanie poredników ................................. 203
Uywanie i naduywanie poredników ...................................................... 206
Wzorzec Proxy w praktycznych zastosowaniach ...................................... 207
Podsumowanie ................................................................................................ 208
Rozdzia 11.
Doskonalenie obiektów za pomoc wzorca Decorator ........................... 211
Dekoratory: lekarstwo na brzydki kod ........................................................ 212
Dekoracja formalna ......................................................................................... 217
Jak uproci model delegacji zada ............................................................. 218
Dynamiczna alternatywa dla wzorca projektowego Decorator .............. 219
Opakowywanie metod ....................................................................... 219
Dekorowanie za pomoc moduów ................................................. 220
Uywanie i naduywanie wzorca projektowego Decorator .................... 221
Dekoratory w praktycznych zastosowaniach ............................................. 222
Podsumowanie ................................................................................................ 223
Rozdzia 12.
Jak zyska pewno, e to ten jedyny,
z wykorzystaniem wzorca Singleton .......................................................... 225
Jeden obiekt, dostp globalny ....................................................................... 225
Zmienne i metody klasowe ........................................................................... 226
Zmienne klasowe ................................................................................ 226
Metody klasowe .................................................................................. 227
Pierwsza próba opracowania singletonu w Ruby ..................................... 228
Zarzdzanie jedynym obiektem ....................................................... 229
Upewnianie si, e istnieje tylko jeden ........................................... 230
Modu Singleton .............................................................................................. 231
Singletony leniwe i chciwe ............................................................................ 232
Konstrukcje alternatywne wzgldem klasycznego singletonu ............... 232
Zmienne globalne jako singletony ................................................... 232
Klasy jako singletony .......................................................................... 233
Moduy jako singletony ..................................................................... 235
Zgłoś jeśli naruszono regulamin