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.
Читал эту книгу в Российской Государственной Библиотеке. Очень хорошая. Написана практикующим программистом. Для программистов - однозначный must have. Написана хорошим, живым языком. Очень легко читается и понимается. Самое главное - ее можно использовать и как учебник, и как справочник (то есть порядок чтения глав не важен). Издана небольшим тиражом, порядка 500-700 экземпляров, что добавляет ей ценности.
Приятно видеть такую литературу на русском языке: актуальная информация, а не унылый перевод, автор вначале представляется, говорит о себе, благодарит помогавших в написании, не унылая обложка - тоже плюс.
Обычно если техническая литература на русском - то либо унылый перевод, либо устаревшая информация, и автор о себе ничего не пишет, как будто ему стыдно за свой опус отвечать.
73848467неплохая книга. Гораздо лучше чем вариант от "банды четырёх"
Реализации паттернов банды четырёх на C#, которые попадались мне на реально какая-то абстрактная хрень.
Пытался разобраться в builder pattern'е в итоге нашёл куда более толковое описание у одного индийского парня в блоге: https://tahirnaushad.com/2017/08/16/builder-pattern-in-c/ Но, эти чуваки выдумали стандрат и написали свою книгу в 94ом для С++, всё что попадается по C# это вольное переложение их паттернов какими-то неизвестными перцами.
GopStopPiracy
они не выдумали, а обобщили в максимально абстрактном и обобщенном виде. Никто не заставляет паттерны использовать 1:1. Очень часто придется немного допиливать под конкретный случай. Тут многое на примерах бдолее понятно рассмотрено https://rutr.life/forum/viewtopic.php?t=4979447
Думаю, что автор неверно понимает принцип инверсии зависимости(DIP). В главе 21, в разделе "Для чего нужен принцип инверсии зависимостей" автор пишет следующее:
"Принцип инверсии зависимостей предназначен для устранения прямых связей между
классами или модулями с зависимостями более высокого уровня ". Далее в качестве примера он приводит UML-диаграмму, которая никакого отношения к DIP не имеет. DIP нужен для устранения зависимости классов слоя бизнес-логики от слоя инфраструктуры. Нужно это для повторного использования слоя бизнес-логики в других приложениях. Для этого слой бизнес-логики на своем уровне абстракции определяет интерфейсы, которым должен соответствовать уровень инфраструктуры. Т.е. классы верхнего уровня определяют контракт(в виде абстрактного класса/интерфейса), которому должны следовать классы нижнего уровня, потому что верхний уровень более важен для бизнеса. В книге автора принципа(Принципы, паттерны и методики гибкой разработки на языке C#) - этот нюанс показан на UML-диаграмме(стр. 193), а в тексте написано: "...интерфейсы публикуются владеющими ими клиентами, а не реализующими их серверами..." У Теплякова в описании принципа все наоборот(см. страницу 291):
"Название принципа отражает нетипичность направления зависимостей: классы
нижнего уровня определяют некоторый контракт, которому должны следовать
классы верхнего уровня"
То, что показано в примере Теплякова больше похоже на демонстрацию OCP, а не DIP.
81377345Думаю, что автор неверно понимает принцип инверсии зависимости(DIP). В главе 21, в разделе "Для чего нужен принцип инверсии зависимостей" автор пишет следующее:
"Принцип инверсии зависимостей предназначен для устранения прямых связей между
классами или модулями с зависимостями более высокого уровня ". Далее в качестве примера он приводит UML-диаграмму, которая никакого отношения к DIP не имеет. DIP нужен для устранения зависимости классов слоя бизнес-логики от слоя инфраструктуры. Нужно это для повторного использования слоя бизнес-логики в других приложениях. Для этого слой бизнес-логики на своем уровне абстракции определяет интерфейсы, которым должен соответствовать уровень инфраструктуры. Т.е. классы верхнего уровня определяют контракт(в виде абстрактного класса/интерфейса), которому должны следовать классы нижнего уровня, потому что верхний уровень более важен для бизнеса. В книге автора принципа(Принципы, паттерны и методики гибкой разработки на языке C#) - этот нюанс показан на UML-диаграмме(стр. 193), а в тексте написано: "...интерфейсы публикуются владеющими ими клиентами, а не реализующими их серверами..." У Теплякова в описании принципа все наоборот(см. страницу 291):
"Название принципа отражает нетипичность направления зависимостей: классы
нижнего уровня определяют некоторый контракт, которому должны следовать
классы верхнего уровня"
То, что показано в примере Теплякова больше похоже на демонстрацию OCP, а не DIP.
Эээ, ты че несешь, причем здесь слои в архитектуре приложения, и более общий принцип.