LABWORK-5 #3
BIN
Lab5-6/img_10.png
Normal file
BIN
Lab5-6/img_10.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
BIN
Lab5-6/img_9.png
BIN
Lab5-6/img_9.png
Binary file not shown.
@ -52,20 +52,23 @@
|
|||||||
|
|
||||||
### Паттерн Strategy
|
### Паттерн Strategy
|
||||||
|
|
||||||
Strategy (Стратегия) — шаблон проектирования, который определяет набор алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. В зависимости от ситуации мы можем легко заменить один используемый алгоритм другим. При этом замена алгоритма происходит независимо от объекта, который использует данный алгоритм.
|
Strategy (Стратегия) — шаблон проектирования, который определяет набор алгоритмов, инкапсулирует каждый из них
|
||||||
|
и обеспечивает их взаимозаменяемость.
|
||||||
|
В зависимости от ситуации мы можем легко заменить один используемый алгоритм другим.
|
||||||
|
При этом замена алгоритма происходит независимо от объекта, который использует данный алгоритм.
|
||||||
|
|
||||||
Участники:
|
Участники:
|
||||||
|
|
||||||
- IStrategy: интерфейс, который определяет метод Algorithm(). Это общий интерфейс для всех реализующих его алгоритмов. Вместо интерфейса здесь также можно было бы использовать абстрактный класс.
|
- IStrategy: интерфейс, который определяет метод Algorithm(). Это общий интерфейс для всех реализующих его алгоритмов.
|
||||||
- ConcreteStrategy1 и ConcreteStrategy2: классы, которые реализуют интерфейс IStrategy, предоставляя свою версию метода Algorithm(). Подобных классов-реализаций может быть множество.
|
Вместо интерфейса здесь также можно было бы использовать абстрактный класс.
|
||||||
|
- ConcreteStrategy1 и ConcreteStrategy2: классы, которые реализуют интерфейс IStrategy,
|
||||||
|
предоставляя свою версию метода Algorithm(). Подобных классов-реализаций может быть множество.
|
||||||
- Context: класс, который хранит ссылку на объект IStrategy и связан с интерфейсом IStrategy отношением агрегации.
|
- Context: класс, который хранит ссылку на объект IStrategy и связан с интерфейсом IStrategy отношением агрегации.
|
||||||
|
|
||||||
Классы, реализующие паттерн:
|
Классы, реализующие паттерн:
|
||||||
|
|
||||||
- IStrategy IReportStrategy – общий интерфейс для всех стратегий формирования отчетов.
|
- IStrategy IStudentWorkChecker – общий интерфейс для всех стратегий проверку индивидуальной работы студента.
|
||||||
- PdfReportStrategy, ExcelkReportStrategy, WordReportStrategy - классы, реализующие формирование отчета в pdf, excel и word.
|
- СourseWorkChecker, LabWorkChecker - классы, реализующие проверку ирс
|
||||||
- Context ReportContext – контекст, который использует стратегию для формирования отчета.
|
- Context Teacher – Преподаватель выбирает подходящцю стратегию для проверки работы
|
||||||
|
|
||||||
Этот подход позволяет легко добавлять новые форматы отчетов (например, JSON или HTML) без изменения существующего кода, реализуя принцип открытости/закрытости.
|
![img_10.png](img_10.png)
|
||||||
|
|
||||||
![img_9.png](img_9.png)
|
|
Loading…
Reference in New Issue
Block a user