Сообщений 10 Оценка 299 [+2/-1] Оценить |
В предлагаемой книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования своих программ. Найденные решения воплощены в краткой и легко применимой на практике форме. Авторы излагают принципы использования паттернов проектирования и приводят их каталог. Таким образом, книга одновременно решает две задачи. Во-первых, здесь демонстрируется роль паттернов в создании архитектуры сложных систем. Во-вторых, применяя содержащиеся в справочнике паттерны, проектировщик сможет с легкостью разрабатывать собственные приложения. Издание предназначено как для профессиональных разработчиков, так и для программистов осваивающих объектно-ориентированное проектирование.
Предисловие
Глава 1. Введение в паттерны проектирования
Глава 2. Проектирование редактора документов
Глава 3. Порождающие паттерны
Глава 4. Структурные паттерны
Глава 5. Паттерны поведения
Глава 6. Заключение
Приложение А. Глоссарий
Приложение В. Объяснение нотации
Приложение С. Базовые классы
Библиография
Алфавитный указатель
Наконец-то эта классическая книга Банды Четырех ("Gang of Four") вышла и на русском языке. Настоятельно рекомендую прочитать - в книге описываются различные приемы объектно-ориентированного проектирования - наверняка некоторые из них будут полезны и для реализации ваших собственных задач. Как и другие книги по методологиям программирования - эта не является 100%-ным и безоговорочным руководством к действию, некоторые вещи могут показаться спорными - но безусловно книга очень интересна и по значимости сравнима с "Объектно-Ориентированным Проектированием" Буча.
Чем дольше мы программируем, тем чаще замечаем, что многие идеи, переходят из одного проекта в другой. Меняются задачи, но идеи остаются неизменными. Опытный программист отличается от начинающего багажом таких идей. Нам повезёт, если мы попадем в команду с более опытными коллегами. Иначе приходится изобретать велосипед снова и снова. Ещё сложнее объяснить коллегам, как работает только что изобретённый велосипед. Хотелось бы заранее знать о велосипедах, и желательно различных моделей. Для этого мы обращаемся к книгам. Ещё десять лет назад книги по программированию ограничивались сведениями о языке программирования. В таких книгах рассказывается о конструкциях языка, типовых библиотеках и идиомах. Местами показываются хитрости и различные приёмы как реализовать типовую проблему. Цель таких книг не передать опыт автора, а ознакомить с возможностями языка. В книге "Паттерны проектирования" (иначе этот труд называют "GoF" - сокращение от "Gang of Four", что соответствует количеству авторов книги) авторы поставили перед собой иную задачу - передать опыт (велосипеды) ведущих программистов в области объектно-ориентированного программирования и проектирования. И им это удалось.
Авторы книги обобщили удачный опыт многих разработчиков, и выделили 23 базовые техники - шаблона (паттерна). Паттерны окружают нас везде: наши привычки, правила поведения, правила дорожного движения. Какие-то из них неудачные, другие не столь очевидны. Как отмечает Стив Макконел, наш мозг обладает уникальной способностью: он не всегда видит эффективные способы, но зато быстро им учится. Если присмотреться, то мы можем выделить удачные решения из личного опыта программирования. Далее обобщаем и пытаемся обсудить с коллегами. На это занятие уходит много времени. Но многое за нас уже сделано, и стоит сэкономить время - обратиться к книге. Так паттерн проектирования (design pattern) представляет описание одной простой идеи, не зависящей от языка программирования, ни от области применения. Каждый паттерн изолирован, расписан в мельчайших подробностях, приведены примеры его использования. Вам нужно только ознакомиться и приложить паттерн к своему приложению.
Базовые паттерны проектирования преследуют единственную цель - гибкость создаваемого приложения. Гибкость позволит легко адаптировать и расширять приложение. Гибкость даст возможность повторного использования существующего кода с минимальными усилиями. Цель других наборов паттернов другие.
В книге выделяется три важных части. Первая - принципы повторного использования и принципы, на которых основываются паттерны проектирования. Вторая - пример проектирования приложения с использованием базовых паттернов. Третья - каталог базовых паттернов. Чтобы начать использовать паттерны необходимо бегло ознакомиться с первой частью, а затем перейти к третьей. Как не затеряться в этом множестве и найти нужные паттерны авторы подсказывают в первой части книги (1.7). Третья часть книги - каталог паттернов - разбит на три группы. В соответствии с целью применения паттернов выделяются: порождающие паттерны, структурные паттерны и паттерны поведения. Группа порождающих паттернов, например, убеждает нас в том, что создание однотипных объектов должно локализоваться в одном месте - фабрике объектов. А применения оператора new в других местах является smell (зловонным кодом, за расшифровкой этого понятия следует обратиться к книге Мартина Фаулера, "Рефакторинг: улучшение существующего кода"). Структурные паттерны говорят, как наиболее оптимально организовывать сложные структуры из классов и объектов, а поведенческие паттерны - как организовать взаимодействие между ними.
Если есть возможность, то прочитайте сначала Роберта Мартина "Быстрая разработка программ: принципы, примеры, практика". А когда вы будете готовы провести бессонные ночи напролёт, в которые вас увлечёт расшифровка GoF-писания, приступайте за книгу. Вернувшись к книге через год, вы обнаружите множество новых идей, скрытых между строк. Первое время вам придется потрудиться, применяя новую терминологию в команде. Постепенно термины проникнут в команду, и вы начнёте применять их в проектах, облегчая коммуникацию. Приложенные усилия по изучению паттернов с лихвой окупятся. Вы поймёте как на самом деле это просто (вспомните слова Стива Макконела, см. выше) ведь давным-давно в первом классе нам казалось, что правописание и арифметика очень запутанные и сложные вещи. А теперь мы над этим не задумываемся - это стало нашей реальностью.
Вывод: Материал книги весьма насыщен. Возможно, вам придётся возвращаться к книге снова и снова. Рекомендуется к прочтению разработчикам и проектировщикам.
Оценка: Классика. Обязательно к прочтению.
Сообщений 10 Оценка 299 [+2/-1] Оценить |