пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Шаблоны проектирования практических решений

  1. Шаблоны проектирования практических решений

ервых проектировщиков ПО можно было назвать вольными творцами, художниками от программирования, со­здававшими все с нуля, однако современное проектирование — это, в основном, использование готовых решений, шаблонов проектирования, так называемых «паттернов» (pattern — шаблон, в дальнейшем эти слова будут употребляться как синонимы). «Изобретение велосипедов» в архитектуре ПО стало делом неблагодарным, и любой проектировщик сейчас обязан знать как минимум базо­вый набор стандартных решений, а хороший — десят­ки, если не сотни шаблонов проектирования (а заодно столько же «антипаттернов», примеров того, «как делать не надо», причем осознавая, почему не следует поступать именно так).

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

Всемирную известность термин «паттерн» получил после публикации книги «Приемы объектно-ориентированного проектирования. Паттерны проектирования». Авторы книги, Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес больше известны, как «Банда четырех» (Gang of Four, ­часто сокращается до GoF). В этой книге было описано всего 23 шаблона, но она дала толчок к появлению новых работ на эту тему.

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

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

Рассмотрим первые 23 паттерна, с которых все началось и которые сейчас должен знать каждый программист. Они разделены на три группы (для каждого паттерна приводится английское название из книги GoF и устоявшийся русский перевод).

«Порождающие шаблоны». В этой группе собраны паттер­ны, описывающие разные способы создания объектов. Прежде всего это «Фабричный метод» (Factory Meth­od), прием определения интерфейса создания объектов, при этом выбранный класс воплощается в подклассах. Шаблон «Абстрактная фабрика» (Abstract Factory) определяет интерфейс для создания семейств, связанных между собой или независимых объектов, конкретные классы которых неизвестны. С помощью шаблона «Строитель» (Builder) можно отделить процесс кон­стру­ирова­ния сложного объекта от его конкретного представления и при этом использовать один и тот же процесс для создания различных представлений. «Прототип» ­(Prototype) описывает виды разрабатываемых объектов с помощью прототипа и создает новые путем его копи­рования. Применение шаблона «Одиночка» (Singleton) ­гарантирует, что некоторый класс может иметь только один экземпляр (и предоставляет глобальную точку до­ступа к нему).

«Структурные паттерны». В этой группе собраны пат­терны, которые позволяют менять структуру взаимо­действия классов. «Адаптер» (Adapter) позволяет адап­тировать интерфейс класса к конкретной ситуации, ­средствами шаблона «Мост» (Bridge) можно отделить интерфейс класса и его реализацию, «Компоновщик» (Composite) объединяет объекты в древовидную структуру для представления иерархии от частного к целому. Компоновщик позволяет клиентам единообразно обращаться к отдельным объектам и группам объектов. ­Паттерн «Оформитель» (Decorator, также известен как Wrapper, «Оболочка») позволяет динамически до­бавлять новое поведение к объекту, «Фасад» (Facade) — скрыть сложность системы путем сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы. Шаблон «Приспо­собленец» (Flyweight) используется для облегчения работы с большим числом мелких объектов, а «За­меститель» (Proxy) — контролировать доступ к объекту, перехватывая все вызовы к нему.

В группе «Паттерны поведения» собраны шаблоны, ответ­ственные за реализацию поведения объектов. «Цепочка ответов» (Chain of Response) позволяет пропустить запрос через цепочку объектов, «Команда» (Command) инкап­сулирует команду в объект, «Интерпретатор» (Interpreter) позволяет создать общее декларативное решение для часто изменяющихся условий задачи. В шаблоне «Итератор» (Iterator) организуется последовательный ­доступ к коллекции, «Посредник» (Mediator) определяет упрощенный механизм взаимодействия классов, «Напоминание» (Memento) задает принципы, позволяющие записывать и восстанавливать внутреннее состояние объекта. Средствами шаблона «Наблюдатель» (Observer) можно оповещать об изменениях множества объектов, «Состояние» (State) — менять поведение объекта при изменении его состояния. «Стратегия» (Strategy) инкапсулирует алгоритм внутри класса.

Паттерн «Шаблонный метод» (Template Method) выделяет конкретные шаги в алгоритме и опирается на подклассы для их реализации. Средствами паттерна «Посе­титель» (Visitor) в класс добавляются новые операции без его изменения.

В этой статье мы рассмотрим паттерны из первой группы — «Порождающие паттерны».

 


22.06.2017; 22:19
хиты: 115
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь