Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПКС / Design_patterns_Лекции все_114-146

.pdf
Скачиваний:
5
Добавлен:
05.09.2023
Размер:
1.08 Mб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

Кафедра информационных управляющих систем

Б1.В.24 «Программирование критических сервисов» для специальностей по направлению 09.03.02 «Информационные системы и технологии»

1.Cервисы программного обеспечения в международных стандартах.

2.Cервисы программного обеспечения в российских стандартах.

3.Критические объекты и процессы программных средств в международных стандартах.

4.Шаблоны проектирования критических сервисов. Часть 2: Порождающие,

структурирующие и поведенческие шаблоны GoF-стандарта на UML-диаграмме классов.

5.Программные компоненты для создания критического сервиса на языке Python.

6.Программные решения на основе критических сервисов в задаче развертывания микросервисной архитектуры.

Преподаватель: Параничев Андрей Викторович

Санкт-Петербург 2023

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

 

115

4.1) Применение концепции MVC (Model-View-Controller) для разработки критических сервисов:

шаблон представления «Model» (critical section, time-critical task; critical range, critical value);

шаблон представления «View» (FMECA: CAI, CDR; C4I: CPI);

шаблон представления «Controller» (SQuaRE; QFD: CPM, Critical Chain Method, Critical Piece First; MOP, MOE.

4.2) Применение GoF-стандарта (Gang of Four, Design Patterns) для разработки критических сервисов:

порождающие (Creational) шаблоны в отношении объектов вида Application Service Object и CMIS;

структурирующие (Structural) шаблоны в отношении объектов, определяемых как service component, service primitives, functional service и continuity service;

поведенческие (Behavior) шаблоны, реализующих SLA, SAS, ISR.

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

 

116

1) Синглетон

блок класса, определяемый в UML тремя горизонтальными

 

Шаблон Синглетон (Singleton, «Одиночка»)

подблоками («полочками»): название, данные и методы/свойства.

предназначен для создания уникального

 

 

(единственного) объекта и единой точки доступа к

 

 

нему.

область доступа к объекту с единой глобальной точкой

Различают 2 вида создания Синглетона:

входа (entry point) к такому объекту

 

-статический (как правило, с помощью

ключевого слова static и «приватного»

‘+’ означает общедоступ-

двойные

ность элементов класса

конструктора);

 

 

угловые скобки

- динамический: реализуется с помощью

(public), ‘-’ – закрытость для

обозначают

вспомогательного класса: Lazy (С#), ..

внешнего доступа (private)

типовое

 

 

 

 

Динамический Синглетон сложнореализуем и обычно

область реализации

действие

менее предпочтителен, чем статический: при

 

Синглетона

 

отложенном создании объекта приходится

 

 

 

с единой

 

отслеживать факт его существования в режиме

 

 

 

точкой

 

времени, близком к реальному (для небольших

 

доступа

 

объектов часто более приемлемо зарезервировать

 

[база данных

 

достаточное количество статических Синглетонов с

 

разными характеристиками).

подчеркиванием выделяют

товаров, еди-

 

 

ный сервер

 

 

статический элемент

 

 

доступа]

 

 

 

 

 

name_var : int; // переменная целого типа - int

main() : void; // функция, возвращающая пустое значение

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

 

117

2) Фабричный Метод, Виртуальный конструктор

 

Шаблон Фабричный Метод

(Factory Method; Виртуальный Конструктор, Virtual Constructor)

предназначен для создания объектов через общий интерфейс [switch-case + общий интерфейс доступа]; рекомендуется использовать, если выборка объектов через общий интерфейс

является ограниченной (2-5%

случаев против 95-98% случаев использования Прототипа - по экспертной оценке).

область создания объекта пользователем

область «производства» объекта через общий

интерфейс доступа

I

общий

интерфейс

область реализаций объектов в соответствии с общим интерфейсом доступа

взаимосвязь физической и/или логической

принадлежности объектов (Shape «живет» внутри наследование интерфейса

ShapeFactory), «жесткая» взаимосвязь (rigid relationship)

 

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

 

 

 

118

 

3) Прототип

наследование [класса]: наследуются не только форматы данных, но и методы/данные/свойства

Шаблон Прототип (Prototype) рекомендуется использовать при создании типовых объектов (в >95% случаев, в противопоставление <5% Фабричного Метода).

Различают 2 вида клонирования (clone) данных при реализации Прототипа:

-«обычная» копия, (shallow copy, clone): при создании копируются все статические данные объекта;

-«полная» копия (deep copy): копируются статические и динамические данные объекта.

область

 

 

 

создания

 

 

 

объекта

 

 

 

область

 

A

общий интер-

 

фейс для оп-

размещения и

 

 

 

 

ределения

извлечения

 

 

 

 

конкретных

прототипов по

 

 

 

 

характеристик

соотношению

 

 

 

 

каждого из

«один-ко-одному»

 

 

общий

 

объектов-

(с помощью

интерфейс

 

прототипов

«менеджера прото-

 

доступа при

область создания

типов», Prototype

получении

каждого из прототипов

Manager)

копии объекта

через общий интерфейс

 

наследование интерфейса (объекты Shape обязаны включать реализацию метода Clone() )

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

 

119

4) Билдер (Построитель, Строитель)

Шаблон Билдер (Builder) применяется для создания объектов путем их поэтапной

«сборки» (assembly). [Примеры: среды разработки (Visual Studio, Android Studio, Net Beans) и приложения, «похожие» по функциональным особенностям

на IDE (MySQL Workbench, Microsoft Office)].

команды управления компонентами сборки через общий интерфейс («внутренняя» сборка)

 

область составных частей, из

область инст-

область зап-

 

которых создается

 

рукций по

роса на сбор-

Результат сборки

«собранный» объект (область

сборке

ку и получе-

«ингридиентов» сборки)

 

 

ния «собран-

создаваемых объектов –

 

 

после выполнения всех

 

 

 

ного» объекта

этапов построения.

 

 

 

 

наследование [класса]

 

 

 

 

(“extended” – в Java):

 

 

 

 

«расширение» класса

 

 

 

 

наследование интерфейса

 

 

 

 

(“implemented” – в Java):

 

команды надстройки над управлением сборкой создаваемых

имплементирование (реализация)

объектов через общий интерфейс («внешняя» сборка)

объявленных методов

 

 

 

 

 

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

 

 

120

4) Билдер (Построитель, Строитель)

Акторы (actor), ролевые

 

 

объекты

@startuml hide footbox autonumber

participant Demo as ": BuilderPatternDemo" participant Builder as ": MealBuilder" participant Parts as ": Meal"

Demo -> Builder : <<call>> Builder -> Builder : <<create>>

Builder -> Parts : PrepareVegMeal() Parts --> Builder : ShowItems()

Builder -> Parts : PrepareNonVegMeal() Parts --> Builder : ShowItems()

Demo -> Builder : <<derive>> @enduml

 

«ответное» действие в

 

виде возвращаемого

на диаграмме последовательности (sequence

значения

diagram) указывается последовательный «план

 

создания» объектов при использовании паттерна Builder

Формат записи акторов: имя_объекта : тип_объекта

типовое (стереотипное) действие/объект принято указывать в << >>

основное действие в виде обращения одного актора к другому

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

 

121

5) Абстрактная Фабрика (Abstract Factory; Kit, Toolkit, Инструментарий, «Набор инструментов»)

Абстрактная Фабрика предоставляет инструменты для немедленного создания типовых объектов (сами объекты создаются после предоставления ссылки на интерфейс доступа к ним). Примеры использования: Системы хранения данных (СХД, Data Storage System), файлообменники, инструменты меню в приложениях.

область «решателя» по подбору инструментов для создания объектов (например,

выбора сервера хранения данных и самих серверов)

СХД

«решатель»

 

область объектов,

 

создаваемых по

 

запросу (ссылки на

 

фрагменты файла)

область пользователя

 

 

инструментарием

 

(например, отображения

 

ссылки на размещаемый

 

видеофайл в Сети)

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

 

122

область «рас-

6) Фасад

 

 

 

пределения

область

 

полномочий»

 

«полномочий»

 

по отображе-

 

определяет дос-

 

нию объектов и

 

тупные функции

 

их скрытию

 

 

 

(при реализации функций через

интерфейсы показывают

наследование

интерфейса

область взаимодействия с

(имплементи-

«видимыми» и «невидимыми»

рование функ-

объектами по отношению к

ций по «ро-

пользователю (обычно через

дительскому

интерфейсы)

шаблону»)

 

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

 

123

7) Мост (дескриптор/контекст)

Различают два подхода к построению Моста:

-Bridge-Down (сначала выполняется построение абстракций управляющих объектов, затем – управляемых реализаций);

-Bridge-Up (сначала – управляемые реализации, затем – управляющие объекты).

Мост также называют Handle/Body (идиома «дескриптор-контекст»)

область пользователя GUI инструментария

область встраи-

 

ваемых техно-

область инст-

логических

рументов

решений

управления

 

наследование

наследование

интерфейса

(класса)

 

Соседние файлы в папке ПКС