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

Вопросы к теме 16

Дайте определение шаблона проектирования. Как в общем виде описываются шаблоны?

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

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

В общем случае шаблон состоит из четырех основных элементов.

1. Имя. Сославшись на имя, можно сразу описать проблему проектирования, ее решения и их последствия.

2. Задача. Описание того, когда следует применять шаблон.

3. Решение. Описание элементов дизайна, отношений междуними, функций каждого элемента. Не имеется в виду конкретныйдизайн или реализация, поскольку шаблон применяется в самыхразных ситуациях. Дается абстрактное описание задачи проектирования и того, как она может быть решена с помощью некотороговесьма обобщенного сочетания элементов (классов и объектов).

4. Результаты. Они являются следствием применения шаблонаи возможных компромиссов.

Опишите принципы работы с шаблонами.

Работа с шаблонами состоит из следующих этапов.

1. Прочитайте описание шаблона, чтобы получить о нем общеепредставление.

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

3. Выберите для участников шаблона подходящие имена. Именаучастников шаблона обычно слишком абстрактны, чтобы употреблятьих непосредственно в коде. Тем не менее, бывает полезно присвоитьучастнику такое же имя, как в программе. Например, если используется шаблон «стратегия в алгоритме размещения текста», то классымогли бы называтьсяSimpleLayoutStrategyилиTeXLayoutStrategy.

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

5. Определите имена операций, встречающихся в шаблоне. Здесь, как и в предыдущем случае, имена обычно зависят от приложения. Руководствуйтесь теми функциями и взаимодействиями, которыеассоциированы с каждой операцией. Кроме того, будьте последовательны при выборе имен. Например, для обозначения фабричногометода можно было бы всюду использовать префикс «Create».

6. Реализуйте операции, которые выполняют обязанности и отвечают за отношения, определенные в шаблоне.

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

Таблица 16.1. Шаблоны проектирования и их краткое описание

Порождающие

шаблоны

Абстрактная фабрика   Семейства порождаемых объектов
Одиночка Единственный экземпляр класса
Прототип Класс, из которого инстанцируется объект
Строитель Способ создания составного объекта
Фабричный метод Инстанцируемыйподклассобъекта

Структурные

шаблоны

Адаптер   Интерфейс к объекту  
Декоратор   Обязанности объекта без порождения подкласса
Заместитель Способ доступа к объекту, егоместоположение
Компоновщик Структура и состав объекта
Мост Реализация объекта
Приспособленец Накладные расходы при хранении объектов
Фасад Интерфейс к подсистеме

Шаблоны поведения

Интерпретатор Грамматика и интерпретацияязыка
Итератор   Способ обхода элементов агрегата
Команда Время и способ выполнения запроса
Наблюдатель Множество объектов, зависящихот другого объекта Способ, которым зависимые объекты поддерживают себя в актуальном состоянии
Посетитель   Операции, которые можно применить к объекту или объектам не меняя класса
Посредник Объекты, взаимодействующиемежду собой, и способ их коопераций
Состояние Состояние объекта
Стратегия Алгоритм
Хранитель Закрытая информация, хранящаяся вне объекта, и время еесохранения
Цепочка обязанностей Объект, выполняющий запрос
Шаблонный метод Шаги алгоритма

Порождающие шаблоны абстрагируют процесс создания экземпляров классов и помогают сделать систему независимой от способа создания, композиции и представления объектов. Шаблоны, порождающие классы, используют наследование, чтобы различать создаваемые экземпляры, а шаблоны, порождающие объекты, поручают создание другим объектам. Данный тип шаблонов важен, когда система больше зависит от композиции объектов, чем от наследования классов. Порождающий шаблон обеспечивает большую гибкость при решении вопроса о том, что создается, кто это создает, как и когда. Можно собрать систему из «готовых» объектов с самой различной структурой и функциональностью стати чески (на этапе компиляции) или динамически (во время выполнения)

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

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

 

Вопросы к теме 17

1. Какова структура процесса разработки ПП с точки зрения тестирования? Поясните каждый этап.

Процесс разработки ПП с позиции тестирования выглядит следующим образом (рисунок 17.1). Отдел разработки бизнес-требованийпредоставляет группе тестирования и отделу разработки два документа: описание бизнес-логики выпускаемого продукта и описаниефункционального дизайна.

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

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

Тестовый сценарий содержит описаниеначальных условий, входных данных, действий пользователя и ожидаемого результата.

Тест-кейсы – описание совокупности шаговконкретных условий и параметров, необходимых для проверки реализации тестируемой функции или ее части.

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

 

Рисунок 17.1. Схема процесса разработки ПП.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: