Stosowanie wzorców projektowych w C++. Kod wielokrotnego wykorzystania w programowaniu zorientowanym obiektowo - ebook
Stosowanie wzorców projektowych w C++. Kod wielokrotnego wykorzystania w programowaniu zorientowanym obiektowo - ebook
Wzorce projektowe powinny się znaleźć w przyborniku każdego profesjonalnego programisty. Ich zaletą jest nie tylko łatwość tworzenia kodu wielokrotnego użytku, ale także możliwość szybkiego rozwiązywania złożonych zagadnień. Osoby, które chcą rozwijać swoje umiejętności programistyczne, mogą również wykorzystać wzorce projektowe do inspirującego dochodzenia, jak można rozwiązać konkretny problem na wiele sposobów - o zróżnicowanym stopniu zaawansowania technicznego i z zastosowaniem różnego rodzaju kompromisów. Taka zabawa jest bardzo zajmująca i pouczająca.
To książka przeznaczona dla programistów C++, którzy chcą poszerzyć swoją wiedzę na temat wzorców projektowych przy użyciu standardu C++17. Opisano tu zarówno klasyczne, jak i całkiem nowoczesne wzorce projektowe ułatwiające rozwiązywanie konkretnych problemów programistycznych w optymalny sposób. Przedstawiono też znaczenie niektórych najnowszych cech języka C++ dla implementacji wzorców. Treść została zilustrowana szeregiem przykładów i scenariuszy pokazujących wykorzystanie wzorców , ich alternatywy i wzajemne relacje. Co więcej, przykłady kodu - przy zachowaniu czytelności - prezentują sobą wysoką jakość oprogramowania produkcyjnego.
W książce między innymi:
- zasady korzystania z wzorców projektowych w nowoczesnym C++
- wzorce kreacyjne: Budowniczy, Fabryka, Prototyp i Singleton
- wzorce strukturalne: Adapter, Most, Dekorator, Fasada
- wzorce zachowań: Łańcuch Odpowiedzialności, Polecenie, Iterator, Mediator
- funkcyjne wzorce projektowe, takie jak Monada
Wzorce projektowe w C++: gwarancja najlepszej architektury!
Spis treści
O autorze 9
O korektorze merytorycznym 11
Rozdział 1. Wprowadzenie 13
- Preliminaria 14
- Dla kogo jest ta książka? 14
- O przykładach kodu 14
- O narzędziach programistycznych 15
- Ważne koncepcje 15
- Curiously Recurring Template Pattern (dosł. ciekawie rekurencyjny wzorzec szablonu) 15
- Dziedziczenie domieszek 16
- Właściwości 16
- Zasady projektowania SOLID 17
- Zasada pojedynczej odpowiedzialności 17
- Zasada otwarty-zamknięty 19
- Zasada podstawiania Liskov 23
- Zasada segregacji interfejsów 25
- Zasada odwracania zależności 27
- Czas na wzorce! 29
CZĘŚĆ I. WZORCE KREACYJNE 31
Rozdział 2. Budowniczy 35
- Scenariusz 35
- Prosty budowniczy 36
- Płynny budowniczy 37
- Komunikowanie zamiaru 37
- Budowniczy w stylu języka Groovy 39
- Złożony budowniczy 40
- Podsumowanie 43
Rozdział 3. Fabryki 45
- Scenariusz 45
- Metoda fabrykująca 46
- Fabryka 47
- Fabryka wewnętrzna 48
- Fabryka abstrakcyjna 49
- Fabryka funkcyjna 51
- Podsumowanie 52
Rozdział 4. Prototyp 55
- Konstrukcja obiektów 55
- Zwykła duplikacja 56
- Duplikacja za pomocą konstruktora kopiującego 56
- Serializacja 58
- Fabryka prototypów 60
- Podsumowanie 61
Rozdział 5. Singleton 63
- Singleton jako obiekt globalny 63
- Klasyczna implementacja 64
- Bezpieczeństwo wątkowe 66
- Kłopoty z singletonami 66
- Singletony a IoC 69
- Monostat 69
- Podsumowanie 70
CZĘŚĆ II. WZORCE STRUKTURALNE 71
Rozdział 6. Adapter 73
- Scenariusz 73
- Adapter 74
- Tymczasowe stany adaptera 76
- Podsumowanie 78
Rozdział 7. Most 79
- Idiom Pimpl 79
- Most 81
- Podsumowanie 82
Rozdział 8. Kompozyt 85
- Właściwości wspierane przez tablice 86
- Grupowanie obiektów graficznych 88
- Sieci neuronowe 89
- Podsumowanie 92
Rozdział 9. Dekorator 93
- Scenariusz 93
- Dekorator dynamiczny 94
- Dekorator statyczny 96
- Dekorator funkcyjny 98
- Podsumowanie 100
Rozdział 10. Fasada 103
- Jak działa terminal 103
- Zaawansowany terminal 104
- Gdzie jest fasada? 105
- Podsumowanie 106
Rozdział 11. Pyłek 107
- Nazwy użytkowników 107
- Boost.Flyweight 109
- Zakresy ciągów 109
- Podejście naiwne 110
- Implementacja przy użyciu wzorca Pyłek 111
- Podsumowanie 112
Rozdział 12. Pełnomocnik 113
- Wskaźniki inteligentne 113
- Pełnomocnik właściwości 114
- Pełnomocnik wirtualny 115
- Pełnomocnik komunikacji 116
- Podsumowanie 118
CZĘŚĆ III. WZORCE ZACHOWAŃ 121
Rozdział 13. Łańcuch odpowiedzialności 123
- Scenariusz 123
- Łańcuch metod 124
- Łańcuch brokerów 126
- Podsumowanie 129
Rozdział 14. Polecenie 131
- Scenariusz 131
- Implementacja wzorca Polecenie 132
- Operacje cofania 133
- Polecenia złożone 135
- Rozdzielanie zapytań od poleceń 137
- Podsumowanie 139
Rozdział 15. Interpreter 141
- Ewaluator wyrażeń numerycznych 142
- Leksykalizacja 142
- Parsowanie 143
- Wykorzystanie leksera i parsera 146
- Parsowanie za pomocą Boost.Spirit 146
- Drzewo składni abstrakcyjnej 147
- Parser 148
- Wyświetlacz 148
- Podsumowanie 149
Rozdział 16. Iterator 151
- Iteratory w bibliotece standardowej 151
- Przeglądanie drzewa binarnego 153
- Iteracja przy użyciu koprocedur 156
- Podsumowanie 157
Rozdział 17. Mediator 159
- Chat room 159
- Mediator ze zdarzeniami 162
- Podsumowanie 164
Rozdział 18. Memento 167
- Rachunek bankowy 167
- Cofnij i ponów 169
- Podsumowanie 171
Rozdział 19. Pusty obiekt 173
- Scenariusz 173
- Pusty obiekt 174
- Wskaźnik shared_ptr nie jest pustym obiektem 175
- Ulepszenia projektu 175
- Niejawny pusty obiekt 175
- Podsumowanie 176
Rozdział 20. Obserwator 177
- Obserwatory właściwości 177
- Observer
<T> 178 - Observable
<T> 179 - Łączenie obserwatorów z obserwowanymi obiektami 180
- Problemy z zależnościami 181
- Anulowanie subskrypcji i bezpieczeństwo wątków 182
- Wielobieżność 183
- Obserwator z biblioteki Boost.Signals2 185
- Podsumowanie 185
Rozdział 21. Stan 187
- Przejścia między stanami zależne od stanu 187
- Maszyna stanów - "samoróbka" 190
- Maszyny stanów z wykorzystaniem biblioteki Boost.MSM 192
- Podsumowanie 195
Rozdział 22. Strategia 197
- Strategia dynamiczna 197
- Strategia statyczna 200
- Podsumowanie 201
Rozdział 23. Metoda szablonowa 203
- Symulacja gry 203
- Podsumowanie 205
Rozdział 24. Wizytator 207
- Nachalny wizytator 208
- Wyświetlacz reflektywny 209
- Co to jest dysponowanie? 210
- Klasyczny wizytator 212
- Implementacja dodatkowego wizytatora 213
- Wizytator acykliczny 214
- Warianty i funkcja std::visit 216
- Podsumowanie 217
CZĘŚĆ IV. DODATEK A. FUNKCJONALNE WZORCE PROJEKTOWE 219
Rozdział 25. Monada Maybe 221
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-7176-7 |
Rozmiar pliku: | 1,9 MB |