Wzorce projektowe w NET Projektowanie zorientowane obiektowo z wykorzystaniem C i F.pdf

(2403 KB) Pobierz
Tytuł oryginału: Design Patterns in .NET: Reusable Approaches in C#
and F# for Object-Oriented Software Design
Tłumaczenie: Radosław Meryk
ISBN: 978-83-283-6270-3
First published in English under the title Design Patterns in .NET: Reusable Approaches in C# and F# for
Object-Oriented Software Design by Dmitri Nesteruk, edition: 1
Copyright © Dmitri Nesteruk, 2019
This edition has been translated and published under licence from APress Media, LLC, part of Springer
Nature.
APress Media, LLC, part of Springer Nature takes no responsibility and shall not be made liable for the
accuracy of the translation.
Polish edition copyright © 2020 by Helion SA
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi
bądź towarowymi ich właścicieli.
Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym
ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Helion SA
ul. Kościuszki 1c, 44-100 Gliwice
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/wzprne.zip
Drogi Czytelniku!
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis tre ci
O autorze .......................................................................................................... 9
Wprowadzenie ................................................................................................ 11
Cz
I
Wprowadzenie ................................................................................. 13
Zasady projektowania SOLID .......................................................................... 15
Zasada pojedynczej odpowiedzialności ................................................................................... 15
Zasada otwarty-zamknięty ........................................................................................................ 17
Zasada podstawiania Liskov ...................................................................................................... 22
Zasada segregacji interfejsów .................................................................................................... 23
Zasada odwracania zależności .................................................................................................. 26
Rozdzia 1
Rozdzia 2
Perspektywa funkcyjna ................................................................................... 29
Podstawy funkcji ......................................................................................................................... 29
Literały funkcyjne w języku C# ................................................................................................ 30
Funkcje przechowywania w C# ................................................................................................ 31
Literały funkcyjne w języku F# ................................................................................................. 33
Kompozycja ................................................................................................................................. 34
Cechy języka związane z paradygmatem funkcyjnym .......................................................... 35
Cz
II
Wzorce kreacyjne ............................................................................. 37
Budowniczy ..................................................................................................... 39
Scenariusz .................................................................................................................................... 39
Prosty budowniczy ..................................................................................................................... 40
Płynny budowniczy .................................................................................................................... 41
Komunikowanie zamiaru .......................................................................................................... 42
Złożony budowniczy .................................................................................................................. 43
Parametry budowniczego .......................................................................................................... 46
Dziedziczenie płynnego interfejsu ........................................................................................... 47
Konstrukcja DSL w F# ............................................................................................................... 50
Podsumowanie ............................................................................................................................ 51
Rozdzia 3
Kup książkę
Poleć książkę
SPIS TRE CI
Rozdzia 4
Fabryki ............................................................................................................ 53
Scenariusz .................................................................................................................................... 53
Metoda fabrykująca .................................................................................................................... 54
Fabryka ......................................................................................................................................... 55
Fabryka wewnętrzna .................................................................................................................. 56
Separacja logiczna ................................................................................................................ 56
Fabryka abstrakcyjna ................................................................................................................. 57
Fabryka funkcyjna ...................................................................................................................... 58
Podsumowanie ............................................................................................................................ 59
Rozdzia 5
Prototyp .......................................................................................................... 61
Kopiowanie głębokie i płytkie .................................................................................................. 61
ICloneable to zły pomysł ........................................................................................................... 62
Głębokie kopiowanie z wykorzystaniem specjalnego interfejsu .......................................... 63
Głębokie kopiowanie obiektów ................................................................................................ 63
Duplikacja za pomocą konstruktora kopiującego ................................................................. 64
Serializacja ................................................................................................................................... 65
Fabryka prototypów ................................................................................................................... 66
Podsumowanie ............................................................................................................................ 67
Rozdzia 6
Singleton ......................................................................................................... 69
Singleton według konwencji ..................................................................................................... 69
Klasyczna implementacja .......................................................................................................... 70
Leniwe ładowanie ................................................................................................................. 71
Kłopoty z singletonami .............................................................................................................. 71
Singletony a IoC .......................................................................................................................... 74
Monostat ...................................................................................................................................... 75
Podsumowanie ............................................................................................................................ 76
Cz
III
Wzorce strukturalne ......................................................................... 77
Adapter ........................................................................................................... 79
Scenariusz .................................................................................................................................... 79
Adapter ........................................................................................................................................ 80
Tymczasowe stany adaptera ...................................................................................................... 81
Problem z generowaniem skrótów ........................................................................................... 83
Adapter właściwości (surogat) .................................................................................................. 85
Adaptery w .NET Framework ................................................................................................... 86
Podsumowanie ............................................................................................................................ 87
Rozdzia 7
Rozdzia 8
Most ................................................................................................................ 89
Konwencjonalny most ............................................................................................................... 89
Most do dynamicznego prototypowania ................................................................................ 92
Podsumowanie ............................................................................................................................ 93
Rozdzia 9
Kompozyt ........................................................................................................ 95
Grupowanie obiektów graficznych .......................................................................................... 95
Sieci neuronowe .......................................................................................................................... 97
Opakowanie kompozytu ........................................................................................................... 99
Podsumowanie .......................................................................................................................... 100
4
Kup książkę
Poleć książkę
SPIS TRE CI
Rozdzia 10 Dekorator ...................................................................................................... 101
Niestandardowy StringBuilder ............................................................................................... 101
Adapter-dekorator ................................................................................................................... 103
Wielokrotne dziedziczenie ...................................................................................................... 103
Dynamiczna kompozycja dekoratora .................................................................................... 106
Dekorator statyczny ................................................................................................................. 108
Dekorator funkcyjny ................................................................................................................ 109
Podsumowanie .......................................................................................................................... 110
Rozdzia 11 Fasada ........................................................................................................... 111
Budowa terminalu handlowego .............................................................................................. 112
Zaawansowany terminal .......................................................................................................... 113
Gdzie jest fasada? ...................................................................................................................... 114
Podsumowanie .......................................................................................................................... 116
Rozdzia 12 Py ek ............................................................................................................. 117
Nazwy użytkowników .............................................................................................................. 117
Formatowanie tekstu ................................................................................................................ 119
Podsumowanie .......................................................................................................................... 121
Rozdzia 13 Pe nomocnik .................................................................................................. 123
Pełnomocnik zabezpieczający ................................................................................................. 123
Pełnomocnik właściwości ........................................................................................................ 125
Pełnomocnik wirtualny ........................................................................................................... 126
Pełnomocnik komunikacji ...................................................................................................... 128
Podsumowanie .......................................................................................................................... 130
Cz
IV
Wzorce zachowa .......................................................................... 131
a cuch odpowiedzialno ci .......................................................................... 133
Scenariusz .................................................................................................................................. 133
Łańcuch metod ......................................................................................................................... 134
Łańcuch brokerów .................................................................................................................... 136
Podsumowanie .......................................................................................................................... 139
Rozdzia 14
Rozdzia 15 Polecenie ....................................................................................................... 141
Scenariusz .................................................................................................................................. 141
Implementacja wzorca Polecenie ........................................................................................... 142
Operacje cofania ....................................................................................................................... 143
Polecenia złożone ..................................................................................................................... 145
Polecenie funkcyjne .................................................................................................................. 147
Zapytania i rozdzielanie zapytań od poleceń ........................................................................ 149
Podsumowanie .......................................................................................................................... 149
Rozdzia 16 Interpreter ..................................................................................................... 151
Ewaluator wyrażeń numerycznych ........................................................................................ 152
Leksykalizacja ..................................................................................................................... 152
Parsowanie .......................................................................................................................... 154
Wykorzystanie leksera i parsera ...................................................................................... 156
5
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin