Заменил 3 пример в 7 работе

This commit is contained in:
bekodeg 2024-12-19 15:30:37 +04:00
parent 354a36f1a9
commit 272e2c21e4
3 changed files with 12 additions and 9 deletions

BIN
Lab5-6/img_10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

View File

@ -52,20 +52,23 @@
### Паттерн Strategy
Strategy (Стратегия) — шаблон проектирования, который определяет набор алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. В зависимости от ситуации мы можем легко заменить один используемый алгоритм другим. При этом замена алгоритма происходит независимо от объекта, который использует данный алгоритм.
Strategy (Стратегия) — шаблон проектирования, который определяет набор алгоритмов, инкапсулирует каждый из них
и обеспечивает их взаимозаменяемость.
В зависимости от ситуации мы можем легко заменить один используемый алгоритм другим.
При этом замена алгоритма происходит независимо от объекта, который использует данный алгоритм.
Участники:
- IStrategy: интерфейс, который определяет метод Algorithm(). Это общий интерфейс для всех реализующих его алгоритмов. Вместо интерфейса здесь также можно было бы использовать абстрактный класс.
- ConcreteStrategy1 и ConcreteStrategy2: классы, которые реализуют интерфейс IStrategy, предоставляя свою версию метода Algorithm(). Подобных классов-реализаций может быть множество.
- IStrategy: интерфейс, который определяет метод Algorithm(). Это общий интерфейс для всех реализующих его алгоритмов.
Вместо интерфейса здесь также можно было бы использовать абстрактный класс.
- ConcreteStrategy1 и ConcreteStrategy2: классы, которые реализуют интерфейс IStrategy,
предоставляя свою версию метода Algorithm(). Подобных классов-реализаций может быть множество.
- Context: класс, который хранит ссылку на объект IStrategy и связан с интерфейсом IStrategy отношением агрегации.
Классы, реализующие паттерн:
- IStrategy IReportStrategy общий интерфейс для всех стратегий формирования отчетов.
- PdfReportStrategy, ExcelkReportStrategy, WordReportStrategy - классы, реализующие формирование отчета в pdf, excel и word.
- Context ReportContext контекст, который использует стратегию для формирования отчета.
- IStrategy IStudentWorkChecker общий интерфейс для всех стратегий проверку индивидуальной работы студента.
- СourseWorkChecker, LabWorkChecker - классы, реализующие проверку ирс
- Context Teacher Преподаватель выбирает подходящцю стратегию для проверки работы
Этот подход позволяет легко добавлять новые форматы отчетов (например, JSON или HTML) без изменения существующего кода, реализуя принцип открытости/закрытости.
![img_9.png](img_9.png)
![img_10.png](img_10.png)