Паттерны на ruby: Команда
Описание:
Есть какой то объект с которым производятся манипуляции.
Нужно предоставить функционал ставить действия по манипуляции в очередь, логировать их или откатывать.
В таких случаях полезен паттерн Команда так как он превращает операцию в самостоятельный объект.
Пример задачи:
Приложение по манипуляции журналом сотрудников. С журналом можно делать следующие операции: добавления сотрудника,
удаления сотрудника, изменение адреса сотрудника, поиска и выгрузки всех данных. В случае ошибки, операции можно откатить.
Реализация:
Есть класс <EmployeeJournal> — это синглтон который может проводить необходимые манипуляции.
Есть абстрактный класс <AbstractCommand> от которого наследуются команды для какого то конкретного случая.
У каждого наследника <AbstractCommand> есть методы .execute, .unexecute для запуска манипуляции и отката назад.