Введение в концепцию шаблонов проектирования

1
2863
views

Перевод статьи «An introduction to the concept of design patterns».

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

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

Что такое шаблон проектирования?

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

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

Шаблон проектирования нельзя изобрести! Его находят или идентифицируют. Если какой-то программист описывает свой собственный лучший подход к решению проблемы, это очень мило с его стороны, однако это не шаблон проектирования. Даже если он вписывается в структуру, известную по шаблонам проектирования «Банды четырех» (Gang-of-Four design patterns), поскольку структура сама по себе не создает хороший шаблон.

Написание шаблона проектирования

Шаблоны проектирования обычно пишутся в так называемом шаблоне (предопределенной структуре), который должен пройти проверку временем, чтобы иметь возможность передать содержимое и идею шаблона проектирования. Эта структура не является неизменной, она может варьироваться от шаблона к шаблону. Есть только три раздела, которые обязательно должны присутствовать в каждом шаблоне проектирования:

  1. Контекст: определение того, когда и в каких конкретно обстоятельствах этот шаблон может быть использован.
  2. Проблема: четкое описание проблемы, которая должна быть решена.
  3. Решение: как вы уже догадались, – четкое описание решения проблемы.

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

Подготовка к конференции

Эти конференции широко известны как «PloP»-конференции. На них люди встречаются за так называемыми писательскими круглыми столами и интенсивно обсуждают тексты шаблонов с разных точек зрения. Шаблон проходит обсуждения успешно, если его признают высококачественным (заметьте, ПО, где применяется шаблон, не становится качественным от самого факта его применения).

Если вы хотите почувствовать, почему так сложно написать хороший шаблон, советую почитать эту работу, где объясняется, как написать шаблон для всем известного «doorlock». Когда я читаю этот шаблон, я всегда восхищаюсь, как много деталей нужно учесть, чтобы этот шаблон работал.

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

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

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

  • Описание самого лучшего подхода из коллективного опыта.
  • Очень четко определенная конструкция контекст-проблема-решение.
  • Решение проблемы, обсужденное многими людьми (естественно, экспертами в отрасли) и одобренное ими как жизнеспособное решение.
  • Способ документирования лучшего подхода к решению проблемы и передача его другим людям.

Шаблон проектирования это НЕ:

  • Описание лучшего подхода от одного человека.
  • Какой-то тип структуры кода, потому что шаблоны существуют не только для разработки ПО.
  • Описание очевидных решений (обычно). Здесь важно заметить, что шаблоны могут устаревать, поскольку из-за улучшений языков/фреймворков (или из-за появления новых) устаревает само решение.

Хорошие книги по шаблонам проектирования

  1. «Приёмы объектно-ориентированного проектирования. Паттерны проектирования» (Design Patterns: Elements of Reusable Object-Oriented Software). Авторы – «Банда четырех»: Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес.
  2. «Шаблоны корпоративных приложений» (Patterns of Enterprise Application Architecture). Автор: Мартин Фаулер.
  3. Вся серия POSA (Pattern-Oriented Software Architecture), начиная с первого тома – «A System of Patterns». Авторы: Франк Бушман, Регина Мёнер, Ганс Ронерт, Питер Соммерленд, Михаель Стал.

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

Дополнительные ресурсы

Многие разработчики главным образом знакомы с шаблонами из книги «Банды четырех», но на самом деле их гораздо больше. Вы можете поискать сайты конференций, например, EuroPLoP: большинство шаблонов доступны бесплатно. Или обратитесь к библиотеке Hillside Group – организации, цель которой – создание шаблонов проектирования.



1 КОММЕНТАРИЙ

  1. Тема была бы лучше раскрыта, если бы были рассмотрены эти самые шаблоны или хотя бы даны ссылки на них.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here