
УМП Технологические подходы к разработке ПО 119
Программирование по образцу – это прямой путь к повторному использованию кода и по-
вышению продуктивности, именно поэтому накопление и актуализация запаса образцов в
различных формах является важнейшей постоянной задачей как отдельно взятого умелого
программиста, так и программирующего коллектива в целом.
5.6.2. Образцы проектирования
Особого обсуждения заслуживает последняя строка таблицы 8. С момента выхода в свет
книги "банды четырех"
88
одной из наиболее горячих тем, обсуждаемых программисткой
общественностью, стали образцы проектирования.
89
Образцы проектирования – это срав-
нительно новая форма обмена программистским опытом и удачными проектными реше-
ниями, но реализует она все ту же принципиальную идею повышения продуктивности –
увеличение объема повторного использования кода.
Неформально говоря, образец проектирования — это типичное решение типичной про-
блемы в данном контексте. Обычно описание образца состоит из четырех основных эле-
ментов.
Имя. Ссылаясь на имя образца, мы можем кратко описать проблему проектирования, ее
решения и их последствия. Это позволяет проектировать на более высоком уровне абст-
ракции. Словарь общеизвестных имен образцов позволяет эффективно вести обсуждение
с коллегами, лаконично документировать принимаемые архитектурные решения. Подбор
хорошего имени — одна из важнейших задач при составлении описания образца.
Задача. Описание контекста применения образца проектирования, т. е. описание конкрет-
ной проблемы проектирования и перечня условий, при выполнении которых имеет смысл
применять данный образец.
Решение. Описание элементов проектирования, отношений между ними, функции каждо-
го элемента. Дается абстрактное описание задачи проектирования и ее обобщенное реше-
ние.
Результаты. Здесь описываются следствия применения образца: влияние на степень эф-
фективности, гибкости, расширяемости и переносимости системы.
Разумеется, образами проектирования пользовались и пользуются все разумные архитек-
торы испокон веков, и не только в области программирования, а буквально во всех облас-
тях человеческой деятельности. Почему же термин "образец проектирования" стал произ-
носиться программистами столь часто именно сейчас? Мы рискнем высказать собствен-
ное мнение по этому вопросу: бум интереса к образцам проектирования в программиро-
вании непосредственно связан с появлением и широким распространением UML.
Действительно, до недавнего времени считалось, что хорошим архитектором, способным
быстро, эффективно и надежно спроектировать сложную программную систему, может
быть только достаточно опытный человек. Причем не просто потерявший много времени
на неудачные самостоятельные попытки, а имеющий опыт успешной работы под руково-
дством уже зарекомендовавшего себя архитектора и/или опыт работы в программирую-
щей организации с богатыми традициями. При непосредственном общении ученик смот-
рит, как мастер решает сложные задачи, пытается поступать "по образцу", иногда ошиба-
ется, осмысливает ошибки, придумывает собственные приемы — короче, учится и наби-
рается опыта. Именно поэтому хорошие архитекторы столь дороги: чтобы из новичка вы-
растить хорошего мастера, нужно затратить массу времени и привлечь блестящих учите-
лей. Конечно, можно и нужно учиться по книгам, но написать книгу, которая может нау-
чить искусству программирования невероятно трудно — такие книги можно пересчитать
по пальцам, в то время, как действующих мастеров программирования, обладающих цен-
нейшим опытом, многие тысячи.
88
GoF — Gang of Four (Gamma, Helm, Johnson, Vlissides)
89
Design Pattern — в программистский жаргон уже довольно прочно вошла калька с английского — "паттерн" (pattern),
но мы, насколько это возможно, избегаем использования жаргона.