Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Идиомы. Паттерны проектирования





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

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

Очевидно, что многие идиомы применимы не только для конкретных языков, но и для программирования вообще, т. е. являются «высокоуровневыми» идиомами. Применительно к объектно-ориентированному проектированию такие идиомы стали называть паттернами (pattern)или образцами [5] проектирования. Ключевой вехой в данном направлении стала работа [4], опубликованная в 1994 г. В книге [4] приводится 23 паттерна, представляющие собой примеры решения проблемы проектирования в некоторых, часто возникающих ситуациях. Каждый паттерн рассматривается по одинаковой схеме.

Особое внимание уделяется названию паттерна – оно должно лаконично и точно отражать назначение паттерна. Хорошо продуманное имя сразу описывает проблему, ее решение и последствия, т. е. инкапсулирует эту информацию. Использование словаря паттернов в обсуждениях и в документации позволяет вести разработку на более высоком уровне абстракции.

Для каждого паттерна подробно описывается соответствующая проблематика. Приводятся конкретные проблемы проектирования, которые позволяет упростить данный паттерн. Описывается контекст проблемы.

Далее рассматривается само решение. Описываются элементы (объекты-участники) дизайна, их роли и отношения. Описание дается в обобщенном виде с использованием UML. Кроме того даются примеры реализации паттерна на языках С++ и/или Smalltalk.

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

Для примера на рис. 5 приведен паттерн «Адаптер» или «Обертка». Данный паттерн преобразует интерфейс одного класса (Adaptee) к интерфейсу другого (Service), который ожидают клиенты (Client).

Service
Request()
Adapter
Request()
Client
Adaptee
SpecificRequest()
adaptee->SpecificRequest()
adaptee

Рис.   Паттерн «Адаптер»

В паттерне используется класс-посредник Adapter, который реализует интерфейс Service (указано стрелкой D) и содержит ссылку adaptee на объект типа Adaptee (показано стрелкой). При обращении Client к методу Request посредника, последний перенаправляет обращение к adaptee, вызвав соответствующий метод SpecificRequest.

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

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

Вслед за [4] начали появляться и другие паттерны, например, паттерны серверных приложений на платформе Java EE, GRASP (General Responsibility Assignment Software Patterns – общие образцы распределения обязанностей), паттерны параллельного программирования [17] и пр. Примечательно появление антипаттернов, т. е. примеров часто повторяемых ошибок проектирования (пример: антипаттерн «Большой комок грязи» – система с трудно распознаваемой структурой).

Паттерны оказались эффективным инструментом абстрагирования разработки и обмена опытом, независящим от языков и систем программирования/проектирования.

Date: 2015-09-24; view: 698; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию