Ruby Wzorce projektowe.pdf

(311 KB) Pobierz
Ruby. Wzorce projektowe
Autor: Russ Olsen
T³umaczenie: Miko³aj Szczepaniak
ISBN: 978-83-246-1688-6
Tytu³ orygina³u:
Design Patterns in Ruby
(Addison-Wesley Professional Ruby Series)
Format: 172x245, stron: 370
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¹ wzorców projektowych?
Stworzony w 1995 roku przez Yukihiro Matsumoto jêzyk Ruby dziêki swym unikalnym
mo¿liwoœciom zdobywa serca programistów na ca³ym œwiecie. Cechy, które 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 wzorców projektowych – zbioru zasad
i regu³ prowadz¹cych do celu w najlepszy, najszybszy i najbardziej elastyczny sposób.
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æ równie¿ w jêzyku
Ruby. Dowiesz siê z niej, w jaki sposób wykorzystaæ znane wzorce, takie jak Observer,
Singleton czy te¿ Proxy. Autor przedstawi Ci równie¿ nowe wzorce, które 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”, który oczywiœcie tak¿e
zosta³ dok³adnie tu omówiony. 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 wzorców.
Podstawy programowania w jêzyku Ruby
Zastosowanie wzorców – takich jak Observer, Composite, Iterator, Command
i wiele innych
Wykorzystanie technik metaprogramowania do tworzenia obiektów
niestandardowych
Wykorzystanie wyra¿eñ regularnych
U¿ycie jêzyków dziedzinowych
Sposób instalacji jêzyka Ruby
Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Korzystaj z doœwiadczenia najlepszych programistów – u¿ywaj
wzorców projektowych w jêzyku Ruby!
S
PIS TRE¥CI
Sïowo wstÚpne .................................................................................................. 15
Przedmowa ........................................................................................................ 19
PodziÚkowania .................................................................................................. 25
O autorze ............................................................................................................ 27
CZ}¥m I
Rozdziaï 1.
WZORCE PROJEKTOWE I RUBY .................................................29
Budowa lepszych programów z wykorzystaniem
wzorców projektowych ................................................................................... 31
Banda Czworga ................................................................................................. 32
Wzorce dla wzorców ........................................................................................ 33
Oddzielaj elementy zmienne od elementów staïych ...................... 33
Programuj pod kÈtem interfejsu, nie implementacji ....................... 34
Stosuj kompozycjÚ zamiast dziedziczenia ........................................ 36
Deleguj, deleguj i jeszcze raz deleguj ................................................ 40
Czy dane rozwiÈzanie rzeczywi cie jest niezbÚdne ........................ 41
Czterna cie z dwudziestu trzech .................................................................... 43
Wzorce projektowe w jÚzyku Ruby? ............................................................. 45
Pierwsze kroki w jÚzyku Ruby ...................................................................... 47
Interaktywny jÚzyk Ruby ................................................................................ 48
Przywitaj siÚ ze wiatem .................................................................................. 48
Zmienne .............................................................................................................. 51
Typy Fixnum i Bignum .................................................................................... 52
Liczby zmiennoprzecinkowe .......................................................................... 53
W jÚzyku Ruby nie ma typów prostych ........................................................ 54
Kiedy brakuje obiektów… ............................................................................... 55
Prawda, faïsz i nil .............................................................................................. 55
Decyzje, decyzje ................................................................................................ 57
PÚtle ..................................................................................................................... 58
Rozdziaï 2.
8
RUBY. WZORCE PROJEKTOWE
WiÚcej o ïañcuchach .......................................................................................... 60
Symbole ............................................................................................................... 63
Tablice ................................................................................................................. 63
Tablice mieszajÈce ............................................................................................. 65
Wyra enia 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
Moduïy ................................................................................................................ 73
WyjÈtki ................................................................................................................ 76
WÈtki ................................................................................................................... 77
ZarzÈdzanie odrÚbnymi plikami z kodem ródïowym .............................. 78
Podsumowanie .................................................................................................. 79
CZ}¥m II
Rozdziaï 3.
WZORCE PROJEKTOWE W J}ZYKU RUBY ..................................81
Urozmaicanie algorytmów
za pomocÈ wzorca projektowego Template Method ................................. 83
Jak stawiÊ czoïo typowym problemom .......................................................... 84
Izolowanie elementów zachowujÈcych dotychczasowÈ formÚ ................ 85
Odkrywanie wzorca projektowego Template Method .............................. 88
Metody zaczepienia .......................................................................................... 89
Gdzie siÚ wïa ciwie podziaïy wszystkie te deklaracje? ............................... 92
Typy, bezpieczeñstwo i elastyczno Ê ............................................................. 93
Testy jednostkowe nie majÈ charakteru opcjonalnego ............................... 95
U ywanie i nadu ywanie wzorca projektowego Template Method ....... 97
Szablony w praktycznych zastosowaniach ................................................... 98
Podsumowanie .................................................................................................. 99
ZastÚpowanie 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
U ywanie i nadu ywanie wzorca projektowego Strategy ....................... 112
Wzorzec Strategy w praktycznych zastosowaniach .................................. 113
Podsumowanie ................................................................................................ 114
Jak byÊ na bie Èco dziÚki wzorcowi Observer ......................................... 117
Trzymamy rÚkÚ na pulsie .............................................................................. 117
Jak skuteczniej trzymaÊ rÚkÚ na pulsie? ...................................................... 119
WyodrÚbnianie mechanizmu umo liwiajÈcego obserwacjÚ .................... 122
Stosowanie bloków kodu w roli obserwatorów ......................................... 125
Odmiany wzorca projektowego Observer .............................................. 126
Rozdziaï 4.
Rozdziaï 5.
SPIS TRE¥CI
9
U ywanie i nadu ywanie wzorca projektowego Observer ..................... 127
Wzorzec Observer w praktycznych zastosowaniach ................................ 129
Podsumowanie ................................................................................................ 130
Rozdziaï 6.
Budowa wiÚkszej caïo ci z czÚ ci za pomocÈ wzorca Composite ......... 133
Caïo Ê i czÚ ci ................................................................................................... 134
Tworzenie kompozytów ................................................................................ 136
Doskonalenie implementacji wzorca Composite
z wykorzystaniem operatorów .................................................................. 140
A mo e tablica w roli kompozytu? ............................................................... 141
Kïopotliwe ró nice .......................................................................................... 141
Wska niki w obie strony ................................................................................ 142
U ywanie i nadu ywanie wzorca projektowego Composite .................. 143
Kompozyty w praktycznych zastosowaniach ............................................ 145
Podsumowanie ................................................................................................ 147
Przeszukiwanie kolekcji z wykorzystaniem wzorca Iterator ................ 149
Iteratory zewnÚtrzne ...................................................................................... 149
Iteratory wewnÚtrzne ..................................................................................... 152
Iteratory wewnÚtrzne kontra iteratory wewnÚtrzne ................................ 153
Niezrównany moduï Enumerable ................................................................ 154
U ywanie i nadu ywanie wzorca projektowego Iterator ........................ 156
Iteratory w praktycznych zastosowaniach ................................................. 158
Podsumowanie ................................................................................................ 161
Doprowadzanie spraw do koñca za pomocÈ wzorca Command ........... 163
Eksplozja podklas ............................................................................................ 164
Prostsze rozwiÈzanie ...................................................................................... 165
Stosowanie bloków kodu w roli poleceñ ..................................................... 166
Rejestrowanie poleceñ .................................................................................... 167
Wycofywanie operacji za pomocÈ wzorca Command .............................. 170
Kolejkowanie poleceñ .................................................................................... 173
U ywanie i nadu ywanie wzorca projektowego Command .................. 174
Wzorzec projektowy Command w praktycznych zastosowaniach ........ 175
Migracje w ramach interfejsu ActiveRecord ................................... 175
Madeleine ............................................................................................. 176
Podsumowanie ................................................................................................ 179
Wypeïnianie luk z wykorzystaniem wzorca Adapter ............................. 181
Adaptery programowe ................................................................................... 182
Minimalne niedociÈgniÚcia ............................................................................ 184
Czy alternatywÈ mo e byÊ adaptowanie istniejÈcych klas? ..................... 186
Modyfikowanie pojedynczych obiektów .................................................... 187
AdaptowaÊ czy modyfikowaÊ? ..................................................................... 188
U ywanie i nadu ywanie wzorca projektowego Adapter ....................... 190
Adaptery w praktycznych zastosowaniach ................................................ 190
Podsumowanie ................................................................................................ 191
Rozdziaï 7.
Rozdziaï 8.
Rozdziaï 9.
10
RUBY. WZORCE PROJEKTOWE
Rozdziaï 10.
Tworzenie zewnÚtrznego reprezentanta naszego obiektu
z wykorzystaniem wzorca Proxy ................................................................. 193
RozwiÈzaniem sÈ po rednicy ........................................................................ 194
Po rednik ochrony .......................................................................................... 196
Po rednicy zdalni ............................................................................................ 197
Po rednicy wirtualni jako rodek rozleniwiajÈcy ...................................... 198
Eliminacja najbardziej uciÈ liwych
elementów implementacji po redników .................................................. 200
Metody i przekazywanie komunikatów ......................................... 201
Metoda method_missing ................................................................... 202
Wysyïanie komunikatów ................................................................... 203
Bezbolesne implementowanie po redników ................................. 203
U ywanie i nadu ywanie po redników ...................................................... 206
Wzorzec Proxy w praktycznych zastosowaniach ...................................... 207
Podsumowanie ................................................................................................ 208
Doskonalenie obiektów za pomocÈ wzorca Decorator ........................... 211
Dekoratory: lekarstwo na brzydki kod ........................................................ 212
Dekoracja formalna ......................................................................................... 217
Jak upro ciÊ model delegacji zadañ ............................................................. 218
Dynamiczna alternatywa dla wzorca projektowego Decorator .............. 219
Opakowywanie metod ....................................................................... 219
Dekorowanie za pomocÈ moduïów ................................................. 220
U ywanie i nadu ywanie wzorca projektowego Decorator .................... 221
Dekoratory w praktycznych zastosowaniach ............................................. 222
Podsumowanie ................................................................................................ 223
Jak zyskaÊ pewno Ê, e to ten jedyny,
z wykorzystaniem wzorca Singleton .......................................................... 225
Jeden obiekt, dostÚp globalny ....................................................................... 225
Zmienne i metody klasowe ........................................................................... 226
Zmienne klasowe ................................................................................ 226
Metody klasowe .................................................................................. 227
Pierwsza próba opracowania singletonu w Ruby ..................................... 228
ZarzÈdzanie jedynym obiektem ....................................................... 229
Upewnianie siÚ, e istnieje tylko jeden ........................................... 230
Moduï Singleton .............................................................................................. 231
Singletony leniwe i chciwe ............................................................................ 232
Konstrukcje alternatywne wzglÚdem klasycznego singletonu ............... 232
Zmienne globalne jako singletony ................................................... 232
Klasy jako singletony .......................................................................... 233
Moduïy jako singletony ..................................................................... 235
Rozdziaï 11.
Rozdziaï 12.
Zgłoś jeśli naruszono regulamin