LABWORK-5 #3
BIN
Lab5-6/img_4.png
Normal file
BIN
Lab5-6/img_4.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
BIN
Lab5-6/img_5.png
Normal file
BIN
Lab5-6/img_5.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
BIN
Lab5-6/img_6.png
Normal file
BIN
Lab5-6/img_6.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
@ -7,15 +7,86 @@
|
|||||||
2) На основе задания из 3 лабораторной работы, для каждого паттерна придумать сущности,
|
2) На основе задания из 3 лабораторной работы, для каждого паттерна придумать сущности,
|
||||||
относящиеся к той же предметной области, что описаны в задании и реализация которых
|
относящиеся к той же предметной области, что описаны в задании и реализация которых
|
||||||
бы в приложении потребовала применения паттерна.
|
бы в приложении потребовала применения паттерна.
|
||||||
### Ограничения:
|
### Ограничения
|
||||||
- На каждый паттерн свои сущности
|
- На каждый паттерн свои сущности
|
||||||
- В качестве источника сущностей использовать предметную область задания 3 лабораторной работы, а не элементы разработки (что-то типа «У меня паттерн Singleton, укажу ка я класс-подключение к БД через него», не принимается).
|
- В качестве источника сущностей использовать предметную область задания 3 лабораторной работы,
|
||||||
|
а не элементы разработки (что-то типа «У меня паттерн Singleton,
|
||||||
|
укажу ка я класс-подключение к БД через него», не принимается).
|
||||||
3) Создать диаграммы классов, отражающие взаимодействие новых
|
3) Создать диаграммы классов, отражающие взаимодействие новых
|
||||||
сущностей (а также используемый паттерн) с классами,
|
сущностей (а также используемый паттерн) с классами,
|
||||||
созданными в рамках 3 лабораторной работы. Отдельно отметить
|
созданными в рамках 3 лабораторной работы. Отдельно отметить
|
||||||
классы, которые являются участниками паттерна
|
классы, которые являются участниками паттерна
|
||||||
|
|
||||||
## Вариант 3: _AbstractFactory, FactoryMethod, ObjectPool._
|
## Вариант 3 _AbstractFactory, FactoryMethod, ObjectPool._
|
||||||
|
|
||||||
### Паттерн AbstractFactory
|
### Паттерн AbstractFactory
|
||||||
|
|
||||||
|
Паттерн "Абстрактная фабрика" (Abstract Factory) предоставляет интерфейс для создания семейств
|
||||||
|
взаимосвязанных объектов с определенными интерфейсами без указания конкретных типов данных объектов.
|
||||||
|
|
||||||
|
Участники
|
||||||
|
|
||||||
|
- AbstractProductA и AbstractProductB – абстрактные классы, определяющие интерфейс для классов,
|
||||||
|
объекты которых будут создаваться в программе
|
||||||
|
- ProductA1 / ProductA2 и ProductB1 / ProductB2 – конкретные классы,
|
||||||
|
представляющие конкретную реализацию абстрактных классов.
|
||||||
|
- AbstractFactory - Абстрактный класс фабрики определяет методы для создания объектов.
|
||||||
|
Причем методы возвращают абстрактные продукты, а не их конкретные реализации.
|
||||||
|
- Client – класс клиента, использующий класс фабрики для создания объектов.
|
||||||
|
При этом он использует исключительно абстрактный класс фабрики AbstractFactory
|
||||||
|
и абстрактные классы продуктов AbstractProductA и AbstractProductB и никак не зависит от их конкретных реализаций.
|
||||||
|
|
||||||
|
Классы, реализующие паттерн:
|
||||||
|
|
||||||
|
- IReportFactory (Abstract Factory) интерфейс фабрики для создания отчетов.
|
||||||
|
- FivePointReportFactory (Concrete Factory) фабрика для 5-балльной системы.
|
||||||
|
- HundredPointReportFactory (Concrete Factory) фабрика для 100-балльной системы.
|
||||||
|
- IPerformanceReport (Abstract Product) интерфейс для отчета по успеваемости.
|
||||||
|
- FivePointPerformanceReport и HundredPointPerformanceReport (Concrete Products) конкретные реализации отчетов по успеваемости для 5- и 10-балльной систем.
|
||||||
|
- ILaggingStudentsReport (Abstract Product) интерфейс для отчета по отстающим студентам.
|
||||||
|
- FivePointLaggingStudentsReport и HundredPointLaggingStudentsReport (Concrete Products) отчеты по отстающим студентам для 5- и 10-балльной систем.
|
||||||
|
- ReportManager (Client) класс, который обрабатывает отчеты
|
||||||
|
|
||||||
|
![img_4.png](img_4.png)
|
||||||
|
|
||||||
|
### Паттерн FactoryMethod
|
||||||
|
|
||||||
|
Фабричный метод (Factory Method) - это паттерн, который определяет интерфейс для создания объектов некоторого класса,
|
||||||
|
но непосредственное решение о том, объект какого класса создавать происходит в подклассах.
|
||||||
|
То есть паттерн предполагает, что базовый класс делегирует создание объектов классам-наследникам.
|
||||||
|
|
||||||
|
Участники:
|
||||||
|
|
||||||
|
- Product – интерфейс или абстрактный класс, определяющий структуру создаваемых объектов.
|
||||||
|
- ConcreteProductA и ConcreteProductB – конкретные реализации интерфейса “Product”, представляющие первый и второй тип продукта.
|
||||||
|
- Creator – абстрактный класс или интерфейс, который определяет фабричный метод для создания объектов типа “Product”.
|
||||||
|
- ConcreteCreatorA и ConcreteCreatorB – конкретные реализации “Creator”, которая создаёт объекты типа “ConcreteProductA” и “ConcreteCreatorB” соответственно.
|
||||||
|
|
||||||
|
Классы, реализующие паттерн:
|
||||||
|
|
||||||
|
- Product IReport – определяет интерфейс для всех отчетов.
|
||||||
|
- ConcreteProductA и ConcreteProductB GradeReport и AttendanceReport – конкретные реализации интерфейса “IReport”.
|
||||||
|
- Creator ReportCreator – определяет фабричный метод для создания объектов типа “IReport”.
|
||||||
|
- ConcreteCreatorA и ConcreteCreatorB GradeReportCreator и AttendanceReportCreator – конкретные реализации “ReportCreator”.
|
||||||
|
|
||||||
|
![img_5.png](img_5.png)
|
||||||
|
|
||||||
|
### Паттерн ObjectPool
|
||||||
|
|
||||||
|
Object Pool (пул объектов) — это поведенческий паттерн, который используется для оптимизации управления ресурсами.
|
||||||
|
Он позволяет многократно использовать уже созданные объекты вместо их повторного создания и уничтожения.
|
||||||
|
Это особенно полезно, когда создание объектов является дорогой операцией с точки зрения времени или ресурсов.
|
||||||
|
|
||||||
|
Участники:
|
||||||
|
|
||||||
|
- Pool – управляет коллекцией объектов. Отвечает за выдачу и возврат объектов из пула. Решает, когда создавать новый объект или использовать существующий.
|
||||||
|
- ReusableObject (повторно используемый объект) - объект, который находится в пуле и может быть многократно использован. Включает логику и состояние объекта.
|
||||||
|
- Client - получает объект из пула для использования. Возвращает объект обратно в пул, когда он больше не нужен.
|
||||||
|
|
||||||
|
Классы, реализующие паттерн:
|
||||||
|
|
||||||
|
- Pool FormatPool – управляет доступностью объектов “Format”. Позволяет выдавать объекты формы обучения для студентов.
|
||||||
|
- ReusableObject Format – содержит данные, связанные с конкретной формой обучения.
|
||||||
|
- Client Student – представляет студента и содержит данные о нем.
|
||||||
|
|
||||||
|
![img_6.png](img_6.png)
|
Loading…
Reference in New Issue
Block a user