lait8904 / DALLE-HOODIE

0 stars 0 forks source link

Services/Commands #2

Closed dmordvinov closed 1 year ago

dmordvinov commented 1 year ago
  1. Создать класс констант для всех поддерживаемых комманд
  2. Создать класс ApplicationContext (пока пустой)
  3. Создать интерфейс IService с двумя методами (см. диаграмму). Один будет реализовать логику исполнения команды и возвращает результат в текстовом виде, готовый просто для вывода на экран. Второй возвращает команду, которую имплементация поддерживает.
  4. Создать имплементации IService для комманд -- help -- categories -- category (тут пользователь передаст ID категории в параметрах метода) Пока в БД не лезем, просто хардкодим данные в коде, для примера, благо модель ты уже написал. Но так, чтобы безболезненно заменить на вызов к БД потом.
  5. В application при старте написать метод, в котором происходит поднятия контекста приложения, а именно создаешь ApplciationContext, объекты сервисов.
  6. В application классе написать бесконечный цикл, в котором ожидаем комманду от пользователя и парсим ее. По команде ищем нужный сервис, --- Если нашли, то вызываем его, получаем String, выводим в консоль, ожидаем след. команду --- Не нашли, написали общее сообщение, что команда не поддерживается, ожидаем след. команду.
dmordvinov commented 1 year ago
  1. HelpService a. Можно referenceInformation вообще как константу сделать, т.е. static final. b. 17-я ява кстати позволяет делать вот так со строками """ bla bla bla bla bla bla """ c. Ты проверяешь наличие входящих параметров, а они нужны вообще здесь? если я вызову справку, то ей вообще никакие параметры не нужны
  2. CategoriesService - a. условие проверки на пустой список можно вообще вынести вначало и сразу вернуть No categories, иначе делать цикл с добавление \n в конце b. Тот же вопрос на проверку входящих параметров
  3. DalleHoodieApplication a. Смысла нет создавать CommandList объект, если ты просто используешь его статические поля.
  4. Там какой то странный файл с названием d, в services