Skip to content

PaGr0m/ifmo-software-design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

CLI

Данный проект - это интерпретатор командной строки, поддерживающий следующие команды:

  • cat [FILE] - вывести на экран содержимое файла;
  • echo - вывести на экран свой аргумент (или аргументы);
  • wc [FILE] - вывести количество строк, слов и байт в файле;
  • pwd - распечатать текущую директорию;
  • exit - выйти из интерпретатора.

Интерпретатор распознает строку при помощи парсера, который разделяет текст на лексемы (Lexemes), которые поддерживают одинарные и двойные кавычки, а также оператор подстановки переменных окружения ($).

Все остальные команды, которые не перечислены в задании ("внешние команды") вызываются из Shell системы.

У CLI имеется свое окружение (Environment), которое хранит в себе все переменные окружения, а также доступные команды. Окружение является единственным для всего проекта. Было принято решение избавиться от шаблона одиночки (Singleton) для него, а использовать внедрение зависимостей (Dependency Injection).

Для имплементации команд CLI было решено использовать паттерн "Команда" (Command), так как очень удобно задать единый интерфейс для функционала команды и реализовать метод для каждой команды. Для создания команд отказался от использования шаблона "Фабрика" (Factory Method), так как в данном случае посчитал это излишнем, поскольку обращение в HashMap будет намного быстрее и по названию команды можно выдавать объект (в данном случае масштабируемость шаблона "Фабрика" никак не использовалась бы).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages