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

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages