Сергей Тепляков - Паттерны проектирования на платформе .NET [2015, PDF, RUS]

Страницы:  1
Ответить
 

dimkqa

Стаж: 14 лет 11 месяцев

Сообщений: 15

dimkqa · 04-Фев-16 18:00 (9 лет 4 месяца назад, ред. 04-Фев-16 18:01)

Паттерны проектирования на платформе .NET
Год издания: 2015
Автор: Сергей Тепляков
Жанр или тематика: Программирование
Издательство: Питер
ISBN: 978-5-496-01649-0
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 320
Описание: Паттерны проектирования остаются важным инструментом в арсенале разработчика, поскольку они опираются на фундаментальные принципы проектирования. Тем не менее, появление новых конструкций в современных языках программирования делает одни паттерны более важными, а значимость других сводит к минимуму. Цель данной книги — показать, как изменились паттерны проектирования за это время, как на них повлияло современное увлечение функциональным программированием, и объяснить, каким образом они используются в современных .NET-приложениях. В издании вы найдете подробное описание классических паттернов проектирования с особенностями их реализации на платформе .NET, а также примеры их использования в .NET Framework. Вы также изучите принципы проектирования, известные под аббревиатурой SOLID, и научитесь применять их при разработке собственных приложений. Книга предназначена для профессиональных программистов, которые хотят изучить особенности классических принципов и паттернов программирования с примерами на языке C# и понять их роль в разработке современных приложений на платформе .NET.
Примеры страниц
Оглавление
Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Кому адресована эта книга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Как читать эту книгу . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Отзывы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Часть I. Паттерны поведения
Глава 1. Паттерн «Стратегия» (Strategy) . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Глава 2. Паттерн «Шаблонный метод» (Template Method) . . . . . . . 37
Глава 3. Паттерн «Посредник» (Mediator) . . . . . . . . . . . . . . . . . . . . . . . . . 57
Глава 4. Паттерн «Итератор» (Iterator) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Глава 5. Паттерн «Наблюдатель» (Observer) . . . . . . . . . . . . . . . . . . . . . . 83
Глава 6. Паттерн «Посетитель» (Visitor) . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Глава 7. Другие паттерны поведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Часть II. Порождающие паттерны
Глава 8. Паттерн «Синглтон» (Singleton) . . . . . . . . . . . . . . . . . . . . . . . . . 122
Глава 9. Паттерн «Абстрактная фабрика» (Abstract Factory) . . . . 137
Глава 10. Паттерн «Фабричный метод» (Factory Method) . . . . . . . 145
Глава 11. Паттерн «Строитель» (Builder) . . . . . . . . . . . . . . . . . . . . . . . . . 160
Часть III. Структурные паттерны
Глава 12. Паттерн «Адаптер» (Adapter) . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Глава 13. Паттерн «Фасад» (Facade) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Глава 14. Паттерн «Декоратор» (Decorator) . . . . . . . . . . . . . . . . . . . . . . 201
Глава 15. Паттерн «Компоновщик» (Composite) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Глава 16. Паттерн «Заместитель» (Proxy) . . . . . . . . . . . . . . . . . . . . . . . . 221
Часть IV. Принципы проектирования
Глава 17. Принцип единственной обязанности . . . . . . . . . . . . . . . . . 231
Глава 18. Принцип «открыт/закрыт» . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Глава 19. Принцип подстановки Лисков . . . . . . . . . . . . . . . . . . . . . . . . . 260
Глава 20. Принцип разделения интерфейсов . . . . . . . . . . . . . . . . . . . 275
Глава 21. Принцип инверсии зависимостей . . . . . . . . . . . . . . . . . . . . 284
Глава 22. Размышления о принципах проектирования . . . . . . . . 305
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Источники информации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Download
Rutracker.org не распространяет и не хранит электронные версии произведений, а лишь предоставляет доступ к создаваемому пользователями каталогу ссылок на торрент-файлы, которые содержат только списки хеш-сумм
Как скачивать? (для скачивания .torrent файлов необходима регистрация)
[Профиль]  [ЛС] 

IgorKuch

Стаж: 12 лет 5 месяцев

Сообщений: 1


IgorKuch · 27-Мар-16 16:42 (спустя 1 месяц 22 дня)

Читал эту книгу в Российской Государственной Библиотеке. Очень хорошая. Написана практикующим программистом. Для программистов - однозначный must have. Написана хорошим, живым языком. Очень легко читается и понимается. Самое главное - ее можно использовать и как учебник, и как справочник (то есть порядок чтения глав не важен). Издана небольшим тиражом, порядка 500-700 экземпляров, что добавляет ей ценности.
[Профиль]  [ЛС] 

nimdamsk

Стаж: 16 лет 1 месяц

Сообщений: 25


nimdamsk · 13-Июн-16 23:27 (спустя 2 месяца 17 дней)

Приятно видеть такую литературу на русском языке: актуальная информация, а не унылый перевод, автор вначале представляется, говорит о себе, благодарит помогавших в написании, не унылая обложка - тоже плюс.
Обычно если техническая литература на русском - то либо унылый перевод, либо устаревшая информация, и автор о себе ничего не пишет, как будто ему стыдно за свой опус отвечать.
[Профиль]  [ЛС] 

brendan14

Стаж: 13 лет 9 месяцев

Сообщений: 48

brendan14 · 11-Мар-17 16:29 (спустя 8 месяцев)

А есть ли эта книга в FB2 или EPUB ?
Для меня PDF очень неудобен.
[Профиль]  [ЛС] 

SI{AY

Стаж: 17 лет 3 месяца

Сообщений: 1347

SI{AY · 30-Апр-17 20:03 (спустя 1 месяц 19 дней)

brendan14
а для технической литературы неудобно fb2 и epub
[Профиль]  [ЛС] 

knik_89

Стаж: 15 лет 8 месяцев

Сообщений: 2


knik_89 · 03-Июн-17 17:39 (спустя 1 месяц 2 дня)

Спасибо, качество оличное! Есть и бумажная книжка, но так удобнее навигировать
[Профиль]  [ЛС] 

npx

Стаж: 17 лет 7 месяцев

Сообщений: 45


npx · 16-Сен-17 18:38 (спустя 3 месяца 13 дней)

неплохая книга. Гораздо лучше чем вариант от "банды четырёх"
[Профиль]  [ЛС] 

GopStopPiracy

Стаж: 14 лет

Сообщений: 2


GopStopPiracy · 06-Сен-18 21:41 (спустя 11 месяцев)

npx писал(а):
73848467неплохая книга. Гораздо лучше чем вариант от "банды четырёх"
Реализации паттернов банды четырёх на C#, которые попадались мне на реально какая-то абстрактная хрень.
Пытался разобраться в builder pattern'е в итоге нашёл куда более толковое описание у одного индийского парня в блоге:
https://tahirnaushad.com/2017/08/16/builder-pattern-in-c/
Но, эти чуваки выдумали стандрат и написали свою книгу в 94ом для С++, всё что попадается по C# это вольное переложение их паттернов какими-то неизвестными перцами.
[Профиль]  [ЛС] 

SI{AY

Стаж: 17 лет 3 месяца

Сообщений: 1347

SI{AY · 07-Сен-18 01:19 (спустя 3 часа)

GopStopPiracy
они не выдумали, а обобщили в максимально абстрактном и обобщенном виде. Никто не заставляет паттерны использовать 1:1. Очень часто придется немного допиливать под конкретный случай. Тут многое на примерах бдолее понятно рассмотрено https://rutr.life/forum/viewtopic.php?t=4979447
[Профиль]  [ЛС] 

npx

Стаж: 17 лет 7 месяцев

Сообщений: 45


npx · 05-Май-21 10:29 (спустя 2 года 7 месяцев)

Думаю, что автор неверно понимает принцип инверсии зависимости(DIP).
В главе 21, в разделе "Для чего нужен принцип инверсии зависимостей" автор пишет следующее:
"Принцип инверсии зависимостей предназначен для устранения прямых связей между
классами или модулями с зависимостями более высокого уровня ". Далее в качестве примера он приводит UML-диаграмму, которая никакого отношения к DIP не имеет.
DIP нужен для устранения зависимости классов слоя бизнес-логики от слоя инфраструктуры. Нужно это для повторного использования слоя бизнес-логики в других приложениях. Для этого слой бизнес-логики на своем уровне абстракции определяет интерфейсы, которым должен соответствовать уровень инфраструктуры. Т.е. классы верхнего уровня определяют контракт(в виде абстрактного класса/интерфейса), которому должны следовать классы нижнего уровня, потому что верхний уровень более важен для бизнеса. В книге автора принципа(Принципы, паттерны и методики гибкой разработки на языке C#) - этот нюанс показан на UML-диаграмме(стр. 193), а в тексте написано: "...интерфейсы публикуются владеющими ими клиентами, а не реализующими их серверами..."
У Теплякова в описании принципа все наоборот(см. страницу 291):
"Название принципа отражает нетипичность направления зависимостей: классы
нижнего уровня определяют некоторый контракт, которому должны следовать
классы верхнего уровня"
То, что показано в примере Теплякова больше похоже на демонстрацию OCP, а не DIP.
[Профиль]  [ЛС] 

Loam06

Стаж: 13 лет 7 месяцев

Сообщений: 8


Loam06 · 10-Окт-22 03:36 (спустя 1 год 5 месяцев, ред. 10-Окт-22 03:36)

npx писал(а):
81377345Думаю, что автор неверно понимает принцип инверсии зависимости(DIP).
В главе 21, в разделе "Для чего нужен принцип инверсии зависимостей" автор пишет следующее:
"Принцип инверсии зависимостей предназначен для устранения прямых связей между
классами или модулями с зависимостями более высокого уровня ". Далее в качестве примера он приводит UML-диаграмму, которая никакого отношения к DIP не имеет.
DIP нужен для устранения зависимости классов слоя бизнес-логики от слоя инфраструктуры. Нужно это для повторного использования слоя бизнес-логики в других приложениях. Для этого слой бизнес-логики на своем уровне абстракции определяет интерфейсы, которым должен соответствовать уровень инфраструктуры. Т.е. классы верхнего уровня определяют контракт(в виде абстрактного класса/интерфейса), которому должны следовать классы нижнего уровня, потому что верхний уровень более важен для бизнеса. В книге автора принципа(Принципы, паттерны и методики гибкой разработки на языке C#) - этот нюанс показан на UML-диаграмме(стр. 193), а в тексте написано: "...интерфейсы публикуются владеющими ими клиентами, а не реализующими их серверами..."
У Теплякова в описании принципа все наоборот(см. страницу 291):
"Название принципа отражает нетипичность направления зависимостей: классы
нижнего уровня определяют некоторый контракт, которому должны следовать
классы верхнего уровня"
То, что показано в примере Теплякова больше похоже на демонстрацию OCP, а не DIP.
Эээ, ты че несешь, причем здесь слои в архитектуре приложения, и более общий принцип.
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error