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

паттерны лаба 1 отчет

.docx
Скачиваний:
9
Добавлен:
31.05.2022
Размер:
282.68 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Факультет инженерно–экономический

Кафедра экономической информатики

Дисциплина «Визуальные средства разработки программных приложений »

Лабораторная работа №1

«Применение паттернов проектирования:

Abstract Factory, Singleton, Composite, Iterator, Observer.»

Студент Хомякова А.А.

группа 972303

Руководитель Борщевич К.А.

Минск 2022

Постановка задачи:

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

Composite

Ограничения решений:

Выстраивает различные объекты в древовидные структуры для представления любой части этой иерархии как единое целое. Позволяет клиентам единообразно иметь доступ к индивидуальным объекты.

Архитектура решений:

Группирует несколько объектов в древовидную структуру используя один класс. Позволяет работать с несколькими классами через один объект.

Ключом к паттерну компоновщик является абстрактный класс Screen, который является одновременно и примитивом, и контейнером.

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

UML диаграммы:

Iterator

Ограничения решений:

В программном средстве тем или иным способом приходится обходить структуры из нескольких внутренних элементов, представляющих совершенно разные и несопоставимые объекты. Используя паттерн Iterator, можно совершать обходы, которые контролирует сам программист.

Случаи использования:

-Для доступа к содержимому агрегированных объектов без раскрытия их внутреннего представления.

-Для поддержки нескольких видов активных обходов одного и того же агрегированного объекта.

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

UML диаграммы:

Obsorver

Ограничения решений:

Ограничения возникают в следующих случаях:

  1. Когда у абстракции есть два аспекта, один из которых зависит от другого. Инкапсуляции этих аспектов в разные объекты позволяют изменять и повторно использовать их независимо.

  2. Когда при модификации одного объекта требуется изменить и другие, но неизвестно, сколько именно объектов нужно изменить.

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

Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.

Архитектура решений:

Для того, чтобы централизованная система изменения данных - уведомлений вовремя доставляла информацию ко всем зависимым объектам, архитектура паттерна наблюдатель и определить интерфейс для уведомления подписчисчиков - в данном случае Minsktrans и Grodnotrans.

UML диаграммы:

Singleton

Ограничения решений:

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

Архитектура решений:

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

UML диаграммы:

 Abstract Factory

Ограничения решений:

Во время создания схожих объектов возникает проблема объемности программного обеспечения и несоблюдение принципа DRY.

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

Архитектура решений:

Архитектура паттерна Абстрактная фабрика предлагает выделить общие интерфейсы для отдельных продуктов, составляющих семейства.

UML диаграммы: