Шаблоны проектирования

Написал небольшую шпаргалку по шаблонам протектирвоания.

В соответствии с Википедией, шаблон проектирования или паттерн (design pattern) — это повторяемая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.

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

Соответственно, знание этих шаблонов позволяет, во-первых, быстрее находить подходящие решения при создании архитектуры собственных программ, а, во-вторых, упростить изучение чужих разработок.

Но для того, чтобы все это сделать, нужно эти самые шаблоны знать :)

Изучить их, конечно, достаточно просто, но есть несколько особенностей.

Во-первых, человеческий мозг устроен так, что постепенно забывает все, чем не пользуется постоянно. Поэтому, однажды добросовестно изучив все паттерны проектирования, но на практике применяя лишь несколько из них, в итоге непременно забудешь о существовании остальных. Отсюда следует необходимость регулярного обновления знаний и вторая особенность:

Как правило описания паттернов приводятся либо в словесном виде, либо с использованием диаграмм UML. Лично мне словесные описания во многих случая кажутся отлично подходящими для изучения, но избыточными для повторения уже известного. Аналогично обстоят дела с UML диаграммами: для получения полной картины одной диаграммы не всегда достаточно, а анализировать кучи диаграмм, чтобы вспомнить что к чему, тоже не хочется.

В общем, в очередной раз вспоминая, какие архитектурные приемы при разработке программ придумало человечество, я решил написать для себя наглядный и компактный справочник по паттернам.

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

Документ написан в формате asciidoc.

Скачать его можно здесь.

Скомпилированный результат представлен здесь.

/post/pattern-cheatsheet/design-patterns-1-thumb.png
/post/pattern-cheatsheet/design-patterns-2-thumb.png


Смотрите также