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