new homework definition
This commit is contained in:
@@ -168,3 +168,40 @@
|
|||||||
Запуск примера умного дома:
|
Запуск примера умного дома:
|
||||||
|
|
||||||
cargo run --bin mocks_example
|
cargo run --bin mocks_example
|
||||||
|
|
||||||
|
## ДЗ 2026-03-05
|
||||||
|
|
||||||
|
Паттерны в умном доме
|
||||||
|
|
||||||
|
### Цель:
|
||||||
|
|
||||||
|
Делаем код умного дома более удобным с использованием различных паттернов.
|
||||||
|
|
||||||
|
### Срок:
|
||||||
|
|
||||||
|
Сдать до: **2026-04-01**
|
||||||
|
|
||||||
|
### Описание/Пошаговая инструкция выполнения домашнего задания:
|
||||||
|
|
||||||
|
Реализовать билдер для умного дома, позволяющий инициализировать объект умного дома в [таком стиле](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=5d0527e4684f726d54dc375829d983f4).
|
||||||
|
|
||||||
|
- [ ] До добавления первой комнаты, билдер запрещает добавлять устройства. Это должно контролироваться компилятором.
|
||||||
|
|
||||||
|
Реализовать компоновщик для построения отчёта об объектах умного дома в [таком стиле](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=c07dfc726e8ccbccdcc2d88a79d3f190).
|
||||||
|
|
||||||
|
- [ ] Использовать статический полиморфизм (дженерики).
|
||||||
|
- [ ] Вызов метода report() должен выводить в терминал отчёт обо всех добавленных объектах.
|
||||||
|
|
||||||
|
Добавить возможность добавления callback-ов в объект комнаты, которые срабатывают при добавлении новых устройств в комнату (паттерн Observer).
|
||||||
|
|
||||||
|
- [ ] Использовать динамический полиморфизм (трейт-объекты).
|
||||||
|
- [ ] Можно передавать как объект-subscriber, так и [замыкание](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=06e9dc9bcce297d1e80a22d7e9338ee8).
|
||||||
|
|
||||||
|
Добавить example-ы, демонстрирующие новый функционал.
|
||||||
|
|
||||||
|
**Критерии оценки:**
|
||||||
|
|
||||||
|
- Package успешно собирается.
|
||||||
|
- Приложение-пример успешно выполняется.
|
||||||
|
- Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений.
|
||||||
|
- Присутствуют и успешно выполняются модульные тесты.
|
||||||
|
|||||||
Reference in New Issue
Block a user