я намеренно написал очень примитивное приложение, которому в реальной жизни никакая схема не нужна. это всего лишь учебный пример
моё приложение спрашивает пользователя начинать ли парс страницы, и если тот соглашается, то страница парсится и результаты записываются в хранилище. я попытался спроектировать приложение так, что тип хранилища(файл, БД или что-то ещё) может быть безболезненно заменён. таким же образом можно заменить и тип запроса соглашения на старт парса(консоль, веб-страничка и т.д.)

вот ссылка на репозиторий с кодом
стрелками обозначено отношение “включает”. то есть, например, класс Parser знает про существование класса File. и наоброт - File не знает ничего про класс Parser. таким образом можно заменить вывод результатов парса в другое хранилище, и при этом ничего не сломается в приложении