Ответственность: репрезентация данных флэш карточки.
Ответственность: считывает из консоли команды пользователя и перенаправляет их выполнение в другие части программы.
Примерные команды: Добавить/удалить/изменить/запросить для повторения карточку. (По сути CRUD).
Ответственность: хранит флэш карточки, реализует всю необходиму логику работы с карточками. Фильтрует и отдает необходимые карточки. Создает, обновляет и удаляет карточки.
Разные классы используют разные источники карточек(база данных, файл, API)
Изначально одна имплеминтация DbCardLibrary
Имеет метод getCard
, который возвращает наиболее подходящую карточку для пользователя
в данный момент времени.
Классы, которые реализуют данный интерфейс, возвращают наиболее оптимальную в данный момент карточку с точки зрения какой-либо методики повторения.
Изначально только один класс SpacedRepetitionCardPicker
,
который подбирает карточки по методике интервальных повторений.
Ответственность: репрезентация результатов единичного решения карточки. С помощью объектов данного класса анализируются успехи пользователя по конкретным карточкам.
Ответственность: хранит решения пользователя по карточкам, реализует всю необходиму логику работы с ними. Фильтрует и отдает необходимые решения. Создает, обновляет и удаляет решения.
Разные классы используют разные источники решений(база данных, файл, API)
Изначально одна имплеминтация DbSolutionLibrary
Обрабатывает введенное пользователем решение по карточке
Ответственность: генерирует отчет о том как пользователь решил карточку. Разные классы, которые реализуют данный интерфейс, выдают разные сообщения об ошибке с точки зрения разных метрик
(например просто сообщают правильно ли пользователь ввёл решение карточки, либо выдают количество ошибок).
Изначально только один класс IsOkReportGenerator
который сообщает правильно или неправильно была решена карточка.