Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / Введение_в_паттерны_проектирования.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
26.1 Кб
Скачать

Введение в паттерны проектирования

При создании программных систем перед разработчиками встает проблема выбора тех или иных проектных решений.

В этих случаях на помощь приходят паттерны.

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

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

Паттерны как раз описывают решения таких повторяющихся задач.

Концепция создания программного обеспечения с использованием паттернов, несомненно, очень важная, но относительно не очень молодая, однако до сих пор нет четкого определения, что же такое паттерн.

Например, следует ли считать алгоритмы и структуры данных паттернами?

По этому вопросу существуют противоположные мнения.

Согласно одному из них, алгоритмы являются вычислительными паттернами, а хорошо известная фундаментальная монография Дональда Кнута "Искусство программирования" по сути, представляет собой каталог таких паттернов.

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

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

История

Впервые, в конце 1970-х годов Кристофером Александром был разработан каталог паттернов, предназначенных для проектирования зданий и городов.

В конце 1980-х годов Кент Бек и Вард Каннингем попытались перенести идеи Александра в область разработки ПО, составив 5 небольших паттернов для проектирования пользовательских интерфейсов на языке Smalltalk.

В 1989 Джеймс Коплиен в целях обучения С++ составил каталог идиом С++ (разновидность паттернов, специфичных для языка программирования), а в 1991 на его основе вышла в свет книга "Advanced C++ Programming Styles and Idioms" (имеется русский перевод [7]).

Однако по настоящему популярным применение паттернов в индустрии разработки программного обеспечения стало после того, как в 1994 был опубликован каталог, включающий 23 паттерна объектно-ориентированного проектирования [5].

Этот каталог настолько популярен, что часто упоминается как паттерны GoF ("Gang of Four" или "банда четырех" по числу авторов).

В настоящее время паттерны продолжают непрерывно развиваться. Появляются новые паттерны, категории и методы их описания.

Классификация паттернов

В силу популярности каталога GoF часто под паттернами проектирования подразумевают все виды паттернов программной индустрии, что является не совсем корректным.

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

Например, в зависимости от сферы применения существуют такие паттерны как паттерны анализа, проектирования, тестирования, документирования, организации процесса разработки, планирования проектов и другие.

В настоящее время наиболее популярными паттернами являются паттерны проектирования.

Одной из распространенных классификаций таких паттернов является классификация по степени детализации и уровню абстракции рассматриваемых систем.

Согласно авторитетам, паттерны разработки программных систем делятся на следующие категории:

  • Архитектурные паттерны

  • Паттерны проектирования

  • Идиомы