Lab1 ДЗ- 1) Применить к иерархии File System паттерн Singleton. 2) Применить к иерархии 2 любой паттерн фабрик (или все сразу)
Lab2 Дополнить класс ConnectionPoolGrowLimit из проекта patterns_demo следующим функциональном:
- Сделать pool с "восстановлением размера". Т.е. pool растет до определенного лимита (например с 10ти исходных ресурсов до 20ти). Но при снижении нагрузки (т.е. при возврате в pool более чем 70% соединений) удаляет лишние добавленные ресурсы (т.е. уменьшает свой размер с 20ти обратно до 10ти)
- Добавить запрет использования ресурса из pool-а по ссылке, после того как он был возвращен в pool.
Lab3 Дополнить иерархию Composite следующей логикой:
- Каждый MenuItem может состоять из комбинации других MenuItem и/или продуктов
- Каждый продукт имеет каллорийность
- Добавить логику расчета каллорийности всего меню
Lab4 Добавить в пакете proxy.homework новый прокси со следующей функциональностью:
- Фильтрация ответа UserRepo метода getAll() с пользователями только старше 18 лет
- Фильтрация параметров метода changeUsers с пользователями с ролью не "admin@"
Lab5 Имитировать работу SpringFilterChain с использованием паттерна "Цепочка обязанностей". Описание работы по ссылке- https://docs.spring.io/spring-security/site/docs/3.0.x/reference/security-filter-chain.html в п.7.3.
Lab6 В иерархию banking из примеров паттерна Command добавить следующую функциональность
- Добавить операцию перевода счета в другую валюту
- Реализовать корректную отмену данной операции
Lab7 В иерархию statecommandupgr добавить следующий функционал:
- Добавить отмену операций с возвратом в нужное состояние.
- Добавить операцию добавления контента в документ. Доступно только в состоянии New.
Lab8 В иерархии memento добавить следующий функционал:
- Добавить в TextEditor понятие курсора. Курсор устанавливается в конкретную позицию текста- оттуда теперь происходит вставка/удаление текста
- Добавить операцию redo, которая отменяет операцию undo
- Дополнительно- объединить этот паттерн с паттерном команда. Ответить для себя- применим ли в этом кейсе паттерн "Состояние"
Lab9 Предложить альтернативное разбиение для схемы сервисов на Microserv.jpg. Опишите ваше решение в терминах microservices canvas План: Разделите ваше приложение на несколько микросервисов с учетом будущих изменений.
Попробуйте сделать несколько вариантов разбиений и попробуйте их оценить. Выберите вариант, который вы будете реализовывать.
На выходе вы должны предоставить Пользовательские сценарии Общую схему взаимодействия сервисов. Для каждого сервиса опишите назначение сервиса и его зону ответственности. Опишите контракты взаимодействия сервисов друг с другом.
Lab10 Дополнить иерархию eventdriven следующим функционалом:
- Добавить событие изменения имени
- Учесть это изменение в snapshot-ах
Lab11 Дополнить иерархию cqrsevent следующим функционалом:
- Добавить команлу отмены команды по id
- Учесть это в event модели
- Учесть возможность дублирования команд (по аналогии с пакетом delivery)