Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Топ:
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
2017-11-17 | 619 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Шаблон проектирования или паттерн (англ. design pattern) в разработке программного обеспечения — повторяемая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.Обычно шаблон не является законченным образцом, который может быть прямо преобразован в код; это лишь пример решения задачи, который можно использовать в различных ситуациях. Объектно-ориентированные шаблоны показывают отношения и взаимодействия между классами или объектами, без определения того, какие конечные классы или объекты приложения будут использоваться.
Шаблоны проектирования, учитывающие специфику конкретного языка программирования, называются идиомами. Это хорошие решения проектирования, характерные для конкретного языка или программной платформы, и потому не универсальные.
Архитектурный паттерн — это рекомендация по построению структуры программы в целом, в то время как паттерн проектирования показывает, как решать конкретную специализированную задачу уже в пределах выбранной архитектуры.
Алгоритмы по своей сути также являются шаблонами, но не проектирования, а вычисления, так как решают вычислительные задачи.
Шаблон класса - это предписание для создания класса, в котором один или несколько типов либо значений параметризованы. Используется в языках программирования со строгой типизацией в случае если класс обладает какой-то общей функциональностью и может потенциально обслуживать несколько типов данных. Например, класс хранящий массив и выполняющий его сортировку. Механизмы хранения и сортировки имеют общий характер, но сами элементы могут иметь разный тип данных. Множество шаблонов классов определены в стандартных библиотеках (например, для C++, vector, list и т.д.).
|
Шаблон класса можно использовать при создании Queue для очереди объектов любого типа. Определение шаблона этого класса могло бы выглядеть следующим образом:
template <class Type>
class Queue {
public:
Queue();
~Queue();
Type& remove();
void add(const Type &);
boolis_empty();
};
Чтобы создать классы Queue, способные хранить целые числа, комплексные числа, программисту достаточно написать:
Queue<int> qi;
Queue<complex<double>> qc;
Шаблоны тестирования xUnit использование шаблонов проектирования применительно к тестам.
http://www.ozon.ru/context/detail/id/4127815/
http://www.ozon.ru/context/detail/id/4884925/
Типы шаблонов проектирования.
Название | Оригинальное название | Описание |
Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять инстанцируемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту. | ||
Одиночка | Singleton | Класс, который может иметь только один экземпляр. |
Абстрактная фабрика | Abstract factory | Класс, который представляет собой интерфейс для создания компонентов системы. |
Строитель (сборщик) | Builder | Класс, который представляет собой интерфейс для создания сложного объекта (из составных частей). |
Фабричный метод | Factory method | Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать. |
Отложенная инициализация | Lazy initialization | Объект, инициализируемый во время первого обращения к нему. |
Пул одиночек | Multiton | Гарантирует, что класс имеет поименованные экземпляры объекта и обеспечивает глобальную точку доступа к ним. |
Объектный пул | Object pool | Класс, который представляет собой интерфейс для работы с набором инициализированных и готовых к использованию объектов. |
Прототип | Prototype | Определяет интерфейс создания объекта через клонирование другого объекта вместо создания через конструктор. |
Получение ресурса есть инициализация | Resource acquisition is initialization (RAII) | Получение некоторого ресурса совмещается с инициализацией, а освобождение — с уничтожением объекта. |
Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу. | ||
Адаптер | Adapter / Wrapper | Объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другому предоставляет несовместимый с первым интерфейс. |
Фасад | Facade | Объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое. |
Мост | Bridge | Структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо. |
Компоновщик | Composite | Объект, который объединяет в себе объекты, подобные ему самому. |
Декоратор или Обёртка | Decorator/ Wrapper | Класс, расширяющий функциональность другого класса без использования наследования. |
Приспособленец | Flyweight | Это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым. |
Заместитель | Proxy | Объект, который является посредником между двумя другими объектами, и ограничивает доступ к объекту, к которому обращаются через него. |
Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость. | ||
Цепочка обязанностей | Chain of responsibility | Предназначен для организации в системе уровней ответственности. |
Команда | Command | Представляет действие. Объект команды заключает в себе само действие и его параметры. |
Интерпретатор | Interpreter | Решает часто встречающуюся, но подверженную изменениям, задачу. |
Итератор | Cursor Iterator | Представляет собой объект, позволяющий получить последовательный доступ к элементам объекта-агрегата без использования описаний каждого из объектов, входящих в состав агрегации. |
Посредник | Mediator | Обеспечивает взаимодействие множества объектов, формируя при этом слабую связанность и избавляя объекты от необходимости явно ссылаться друг на друга. |
Хранитель | Memento | Позволяет не нарушая инкапсуляцию зафиксировать и сохранить внутренние состояния объекта так, чтобы позднее восстановить его в этих состояниях. |
Наблюдатель | Observer | Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом событии. |
Состояние | State | Используется в тех случаях, когда во время выполнения программы объект должен менять своё поведение в зависимости от своего состояния. |
Стратегия | Strategy | Предназначен для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. |
Шаблонный метод | Template method | Определяет основу алгоритма и позволяет наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом. |
Посетитель | Visitor | Описывает операцию, которая выполняется над объектами других классов. При изменении класса Visitor нет необходимости изменять обслуживаемые классы. |
|
|
Порождающие паттерны
Одиночка
Структурные паттерны
Шаблон Adapter (Адаптер)
Данный шаблон позволяет состыковать два интерфейса. Это требуется, когда заказчику надо взаимодействовать с объектами системы через свой интерфейс, но объекты внутри этой системы предоставляют другие интерфейсы, не совместимые с клиентским (рис. 7.7).
Рис.. 7.7. Шаблон Адаптер в Дизайнере моделиDelphiXE
TTarget — это интерфейс, который задан с внешней стороны по отношению к имеющейся системе. Пусть в нем имеется метод GetCodeString, который должен возвращать некоторую строку. А в адаптируемом к нему интерфейсе TAdaptee вообще нет никаких методов, а только числовое поле field. Функцию адаптера выполняет класс TAdapter:
Type
TTarget = class abstract
Public
function GetCodeString: string; virtual; abstract;
end;
TAdaptee = class
Public
field: integer;
end;
TAdapter = class (TTarget)
Private
FAdaptee: TAdaptee;
Public
function GetCodeString: string; override; constructor Create(AAdaptMe: TAdaptee);
end;
Адаптер реализует переходные функции путем наследования базового интерфейса TTarget, за счет чего внешний пользователь обращается к адаптеру как объекту, реализующему абстрактный интерфейс TTarget. А для взаимодействия с «местным» адаптируемым объектом внутри адаптера имеется поле FAdaptee, которое хранит этот адаптируемый объект (он передается в адаптер сразу в момент конструирования).
|
constructor TAdapter.Create(AAdaptMe:TAdaptee);
Begin
inherited Create;
FAdaptee:= AAdaptMe;
end;
Преобразование адаптируемого интерфейса к целевому реализуется внутри метода GetCodeString, унаследованного от интерфейса TTarget. Например, так.
function TAdapter.GetCodeString: string;
Begin
Result:= FAdaptee.field.ToString;
end;
Пусть в прикладной программе доступен адаптируемый объект и подготовлен объект-адаптер:
var ade: TAdaptee;
ad:TAdapter;
Тогда, после того как объект с адаптируемым интерфейсом создан и настроен:
ade:= TAdaptee.Create;
ade.field:= 5;
формируется объект-адаптер
ad:= TAdapter.Create(ade);
В нём оказывается экземпляр ade, а внешне доступен интерфейс TTarget:
Label1.text:= ad.GetCodeString;
Фасад
Мост
|
|
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!