Паттерны проектирования на платформе .NET

Сергей Тепляков

Паттерны проектирования остаются важным инструментом в арсенале разработчика, поскольку они опираются на фундаментальные принципы проектирования. Тем не менее, появление новых конструкций в современных языках программирования делает одни паттерны более важными, а значимость других сводит к минимуму.

Цель данной книги - показать, как изменились паттерны проектирования за это время, как на них повлияло современное увлечение функциональным программированием, и объяснить, каким образом они используются в современных .NET-приложениях. В издании вы найдете подробное описание классических паттернов проектирования с особенностями их реализации на платформе .NET, а также примеры их использования в .NET Framework. Вы также изучите принципы проектирования, известные под аббревиатурой SOLID, и научитесь применять их при разработке собственных приложений.

Книга предназначена для профессиональных программистов, которые хотят изучить особенности классических принципов и паттернов программирования с примерами на языке C# и понять их роль в разработке современных приложений на платформе .NET.

Издательство: Питер, 2016 г.

ISBN 978-5-496-01649-0

Количество страниц: 320.

Содержание книги «Паттерны проектирования на платформе .NET»:

  • 15 Об авторе
  • 16 Кому адресована эта книга
  • 17 Как читать эту книгу
  • 18 Отзывы
  • 19 Благодарности
  • 20 От издательства
  • 21 Предисловие
    • 21 GoF-паттерны на платформе .NET
    • 22 Отношение к паттернам проектирования
    • 24 Фреймворки паттернов
    • 25 Гибкость vs. конкретность
    • 25 Для чего нужна еще одна книга о паттернах
  • 28 Часть I. Паттерны поведения
  • 28 Глава 1. Паттерн «Стратегия» (Strategy)
    • 28 Мотивация
    • 30 Варианты реализации в .NET
    • 31 Обсуждение паттерна «Стратегия»
      • 32 Выделять интерфейс или нет
      • 32 Интерфейс vs. делегат
    • 35 Применимость
    • 36 Примеры в .NET Framework
  • 37 Глава 2. Паттерн «Шаблонный метод» (Template Method)
    • 37 Мотивация
    • 39 Варианты реализации в .NET
      • 39 Локальный шаблонный метод на основе делегатов
      • 42 Шаблонный метод на основе методов расширения
    • 44 Обсуждение паттерна «Шаблонный метод»
      • 44 Изменение уровня абстракции
      • 45 Стратегия vs. шаблонный метод
    • 46 Шаблонный метод и обеспечение тестируемости
      • 48 Шаблонный метод и контракты
      • 50 Применимость
    • 50 Примеры в .NET Framework
  • 57 Глава 3. Паттерн «Посредник» (Mediator)
    • 57 Мотивация
    • 60 Обсуждение паттерна «Посредник»
      • 61 Явный и неявный посредник
      • 62 Явные и неявные связи
      • 64 Тестировать или не тестировать? Вот в чем вопрос!
      • 65 Архитектурные посредники
    • 66 Применимость
    • 66 Когда третий лишний
    • 66 Примеры в .NET Framework
  • 68 Глава 4. Паттерн «Итератор» (Iterator)
    • 68 Мотивация
    • 70 Обсуждение
      • 72 Особенности итераторов в C#/.NET
      • 76 «Ленивость» итераторов
    • 76 Использование итераторов в цикле foreach
      • 78 Итераторы или генераторы
      • 79 Валидность итераторов
      • 80 Итераторы и структуры
      • 80 Push-based-итераторы
    • 81 Применимость
    • 82 Примеры в .NET Framework
  • 83 Глава 5. Паттерн «Наблюдатель» (Observer)
    • 83 Общие сведения
    • 84 Мотивация
    • 86 Варианты реализации
      • 86 Методы обратного вызова
      • 87 События
      • 89 Строго типизированный наблюдатель
      • 90 IObserver/IObservable
    • 93 Обсуждение паттерна «Наблюдатель»
      • 93 Выбор варианта реализации «Наблюдателя»
      • 93 Делегаты
      • 94 События
    • 94 Наблюдатель в виде специализированного интерфейса
      • 95 Сколько информации передавать наблюдателю
      • 97 Наблюдатели и утечки памяти
      • 98 Применимость
    • 99 Примеры в .NET Framework
  • 100 Глава 6. Паттерн «Посетитель» (Visitor)
    • 100 Мотивация
    • 105 Обсуждение
      • 105 Функциональная vs. Объектная версия
      • 108 Двойная диспетчеризация
      • 109 Интерфейс vs. абстрактный класс посетителя
    • 110 Применимость
    • 111 Примеры в .NET Framework
  • 112 Глава 7. Другие паттерны поведения
    • 112 Паттерн «Команда»
    • 114 Паттерн «Состояние»
    • 116 Паттерн «Цепочка обязанностей»
  • 122 Часть II. Порождающие паттерны
  • 122 Глава 8. Паттерн «Синглтон» (Singleton)
    • 122 Мотивация
    • 123 Варианты реализации в .NET
      • 123 Реализация на основе Lazy of T
      • 124 Блокировка с двойной проверкой
      • 126 Реализация на основе инициализатора статического поля
    • 129 Обсуждение паттерна «Синглтон»
      • 129 Singleton vs. Ambient Context
      • 132 Singleton vs. Static Class
      • 132 Особенности и недостатки
    • 134 Применимость: паттерн или антипаттерн
    • 135 Примеры в .NET Framework
    • 136 Дополнительные ссылки
  • 137 Глава 9. Паттерн «Абстрактная фабрика» (Abstract Factory)
    • 138 Мотивация
    • 141 Обсуждение паттерна «Абстрактная фабрика»
      • 141 Проблема курицы и яйца
      • 142 Обобщенная абстрактная фабрика
    • 143 Применимость паттерна «Абстрактная фабрика»
    • 144 Примеры в .NET Framework
  • 145 Глава 10. Паттерн «Фабричный метод» (Factory Method)
    • 145 Мотивация
    • 147 Диаграмма паттерна «Фабричный метод»
      • 147 Классическая реализация
      • 148 Статический фабричный метод
      • 148 Полиморфный фабричный метод
    • 149 Варианты реализации
      • 149 Использование делегатов в статической фабрике
      • 150 Обобщенные фабрики
    • 153 Обсуждение паттерна «Фабричный метод»
      • 153 Сокрытие наследования
      • 154 Устранение наследования
      • 156 Использование Func в качестве фабрики
      • 156 Конструктор vs. фабричный метод
    • 157 Применимость паттерна «Фабричный метод»
      • 157 Применимость классического фабричного метода
      • 157 Применимость полиморфного фабричного метода
      • 158 Применимость статического фабричного метода
    • 158 Примеры в .NET Framework
  • 160 Глава 11. Паттерн «Строитель» (Builder)
    • 160 Мотивация
    • 164 Особенности реализации в .NET
      • 164 Использование текучего интерфейса
      • 165 Методы расширения
    • 167 Обсуждение паттерна «Строитель»
      • 167 Строго типизированный строитель
      • 170 Создание неизменяемых объектов
      • 171 Частичная изменяемость
    • 173 Применимость
    • 174 Примеры в .NET Framework
  • 188 Часть III. Структурные паттерны
  • 188 Глава 12. Паттерн «Адаптер» (Adapter)
    • 188 Мотивация
    • 191 Обсуждение паттерна «Адаптер»
      • 191 Адаптер классов и объектов
      • 192 Адаптивный рефакторинг
      • 194 Языковые адаптеры
    • 196 Применимость
    • 196 Примеры в .NET Framework
  • 197 Глава 13. Паттерн «Фасад» (Facade)
    • 197 Мотивация
    • 199 Обсуждение паттерна «Фасад»
      • 199 Инкапсуляция стороннего кода
      • 199 Повышение уровня абстракции
    • 200 Применимость
    • 200 Примеры в .NET Framework
  • 201 Глава 14. Паттерн «Декоратор» (Decorator)
    • 201 Мотивация
    • 205 Обсуждение паттерна «Декоратор»
      • 205 Композиция vs. наследование
      • 207 Инициализация декораторов
      • 208 Недостатки декораторов
      • 208 Генерация декораторов
    • 209 Применимость
    • 209 Примеры в .NET Framework
  • 214 Глава 15. Паттерн «Компоновщик» (Composite)
    • 214 Мотивация
    • 218 Обсуждение паттерна «Компоновщик»
    • 219 Применимость
    • 220 Примеры в .NET Framework
  • 221 Глава 16. Паттерн «Заместитель» (Proxy)
    • 221 Мотивация
    • 223 Обсуждение паттерна «Заместитель»
    • 224 Прозрачный удаленный заместитель
      • 224 Заместитель vs. декоратор
      • 225 Виртуальный заместитель и Lazy
    • 226 Применимость
    • 226 Примеры в .NET Framework
  • 231 Часть IV. Принципы проектирования
  • 231 Глава 17. Принцип единственной обязанности
    • 233 Для чего нужен SRP
    • 233 Принцип единственной обязанности на практике
    • 241 Типичные примеры нарушения SRP
    • 242 Выводы
  • 243 Глава 18. Принцип «открыт/закрыт»
    • 244 Путаница с определениями
    • 247 Какую проблему призван решить принцип «открыт/закрыт»
    • 248 Принцип «открыт/закрыт» на практике
      • 248 Закрытость интерфейсов
      • 251 Открытость поведения
      • 253 Принцип единственного выбора
    • 254 Расширяемость: объектно-ориентированный и функциональный подходы
    • 258 Типичные примеры нарушения принципа «открыт/закрыт»
    • 258 Выводы
  • 260 Глава 19. Принцип подстановки Лисков
    • 262 Для чего нужен принцип подстановки Лисков
    • 263 Классический пример нарушения: квадраты и прямоугольники
    • 265 Принцип подстановки Лисков и контракты
    • 265 О сложностях наследования в реальном мире
    • 268 Когда наследования бывает слишком мало
    • 270 Принцип подстановки Лисков на практике
    • 273 Типичные примеры нарушения LSP
    • 273 Выводы
    • 274 Дополнительные ссылки
  • 275 Глава 20. Принцип разделения интерфейсов
    • 276 Для чего нужен принцип разделения интерфейса
    • 278 SRP vs. ISP
    • 279 Принцип разделения интерфейсов на практике
    • 282 Типичные примеры нарушения ISP
    • 282 Выводы
  • 284 Глава 21. Принцип инверсии зависимостей
    • 285 Интерфейсы
    • 286 Слои
    • 288 Наблюдатели
    • 291 Для чего нужен принцип инверсии зависимостей
    • 293 Остерегайтесь неправильного понимания DIP
    • 294 Тестируемость решения vs. подрыв инкапсуляции
    • 295 Принцип инверсии зависимостей на практике
    • 300 Примеры нарушения принципа инверсии зависимостей
    • 300 Выводы
    • 304 Дополнительные ссылки
  • 305 Глава 22. Размышления о принципах проектирования
    • 307 Использование принципов проектирования
    • 308 Правильное использование принципов проектирования
    • 310 Антипринципы проектирования
  • 311 Заключение
  • 313 Источники информации
    • 313 Книги о дизайне и ООП
    • 316 Статьи

Инструкция как скачать книгу Сергей Тепляков: Паттерны проектирования на платформе .NET в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Паттерны проектирования на платформе .NET
Рейтинг книги:
0 голосов
3527

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: